如何将视图变量绑定到 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的新秀。

如何将视图变量绑定到 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。