Car*_*s00 5 .net c# data-binding wpf mvvm
我有一个Window包含很少的WPF UserControls,那些控件包含另一个.现在,如何ViewModel为这个窗口创建以及绑定它的最主要方式是什么.
我确实希望首先需要ViewModel为每个子控件创建一个.
有几种方法可以做到这一点。
我会推荐这个方法。
如果您的窗口是在App类中创建的,例如
var window = new MyWindow();
window.Show();
Run Code Online (Sandbox Code Playgroud)
我会在显示窗口之前分配虚拟机:
var window = new MyWindow();
window.DataContext = GetDataContextForWindow();
window.Show();
Run Code Online (Sandbox Code Playgroud)
如果您的某个控件需要自己的视图模型,请在创建控件实例时分配虚拟机。
如果要设置控件的 VM,可以将该DataContext属性绑定到周围 VM 提供的 VM 实例。
<Controls:MyControl DataContext={Binding MyControlsVm} />
Run Code Online (Sandbox Code Playgroud)
您可以使用后面代码中的 init 方法来设置 VM,例如
public MyWindow()
{
InitializeComponent();
DataContext = CreateViewModel;
}
Run Code Online (Sandbox Code Playgroud)
如果您不想为主页创建虚拟机,您可以使用一个技巧:
public MyWindow()
{
InitializeComponent();
DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)
并只需使用类背后的代码作为VM。