如何将视图变量绑定到 WPF MVVM 中的视图模型
本文关键字:视图 MVVM 模型 WPF 绑定 变量 | 更新日期: 2023-09-27 18:30:18
我有一个创建的窗口(WPF和MVVM) - 说PrintWidow(所以我有PrintWindow.xaml,PrintWindow.xaml.cs,PrintWindowViewModel.cs-viewmodel)
现在我将在按钮单击或某些命令触发器上使用(调用)这个PrintWindow
obj 从其他类,我想为此 PrintWindow(遵循 MVVM)设置文档源。
我该怎么做?我在 PrintWindow.xaml 中创建了一个PrintDocument
对象.cs并尝试按如下方式绑定它:(显然只是一个空白尝试 - 因为我无法在 XAML 中执行此声明)
private PrintDocument printDocuementView;
public PrintDocument PrintDocuement
{
get { return printDocuementView; }
set { printDocuementView = value; }
}
//constructor
public PrintWindow()
{
InitializeComponent();
this.DataContext = new PrintViewModel();
Binding b = new Binding();
b.Source = printDocuementView;
b.Path = new PropertyPath("PrintDocumentCommand"); // "PrintDocumentCommand" is defined in View Model class and is responsible to set the `PrintDocument` object there.
}
此代码(显然)不起作用。我应该怎么做。总结:我想从另一个窗口打开PrintWindow
,并最终从"另一个寡妇"对象的代码后面设置一些PrintWindow
属性。查询是 - 此属性应放在哪里?视图?视图模型? ??令人费解
我已经用谷歌搜索了答案 - 但无法与我的问题联系起来。
我是WPF
的新生和MVVM
的新秀。
由于您的PrintDocumentCommand
在您的PrintViewModel
中,但您将此绑定的源设置为PrintDocument
-Class 的实例,因此找不到它,因为绑定正在查找PrintDocument
-Class 中的PrintDocumentCommand
。
如果要从另一个窗口打开 PrintWindow,请将PrintDocument
-Property 和PrintDocumentCommand
放在另一个窗口的 ViewModel 中。现在,通过PrintDocumentCommand
执行的函数可能如下所示:
private void Print()
{
PrintWindow pw = new PrintWindow(PrintDocument);
pw.ShowDialog();
}
PrintView 的构造函数可能如下所示:
public PrintWindow(PrintDocument pd)
{
InitializeComponents();
this.DataContext = new PrintViewModel(pd);
}
现在,您可以在PrintViewModel中访问PrintDocument。