小编Kir*_*ran的帖子

如何使用 MVVM 模式将子元素添加到 WPF 中的网格

我正在尝试通过 mvvm 模式中的绑定而不是隐藏代码向网格控件添加一个子元素。

查看代码:

<Grid  Name="grid">

</Grid>
Run Code Online (Sandbox Code Playgroud)

背后代码:

    public MainWindow()
    {
        InitializeComponent();
        AddControl();
    }

    private void AddControl()
    {
        Viewer viewer = new Viewer();
        grid.Children.Add(viewer.GetUIElement());
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但我想在虚拟机中通过绑定而不是代码隐藏来完成此操作。请注意,在上面的代码中,Viewer 是第三方控件,它通过后面的代码完美地添加到网格中。我想使用绑定动态地将查看器控件添加到网格中。

并不总是需要有网格控件。它可以是任何控件,例如父控件/托管控件/内容控件。只有一个子控件,即 Viewer。

我有 ICommand、INotifyPropertyChanged、依赖属性等绑定的基本知识,但现在知道如何将任何控件(在我的例子中为 Viewer)添加到另一个父控件(在我的例子中为 Grid)。

代码可能如下:View和VM通过DataContext绑定

查看代码:

<ContentControl Content="{Binding MyControl}"></ContentControl>
Run Code Online (Sandbox Code Playgroud)

虚拟机代码:

class VM
{
    Viewer view;
    public VM()
    {
        view = new Viewer();
    }
    public Viewer MyControl
    {
        get {return view; }
        set{view= value;}
    }
}
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm

6
推荐指数
1
解决办法
3548
查看次数

标签 统计

c# ×1

mvvm ×1

wpf ×1