我创建了一个窗口(WPF和MVVM)-说PrintWidow(所以我有PrintWindow.xaml,PrintWindow.xaml.cs,PrintWindowViewModel.cs- viewmodel)

现在,我将在按钮单击或某些命令触发器上使用(调用)其他类的PrintWindow obj,我想为此PrintWindow设置Document Source(在MVVM之后)。

我该怎么做?我在PrintWindow.xaml.cs中创建了一个PrintDocument对象,并尝试如下进行绑定(bind):(显然,这只是一次空的尝试-因为我无法在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并最终从'other widow'对象后面的代码中设置PrintWindow的一些属性。查询是-该属性应该去哪里?看法 ? ViewModel? ??迷惑

我已经在Google上寻找答案-但无法与我的问题有关。

我是WPF的大一新生,是MVVM的新秀。

最佳答案

由于您的PrintDocumentCommandPrintViewModel中,但您正在将此绑定(bind)的源设置为PrintDocument -Class的实例,因此找不到它,因为绑定(bind)正在PrintDocumentCommand -Class中寻找PrintDocument

如果要从另一个窗口打开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。

关于c# - 如何在WPF MVVM中将View变量绑定(bind)到ViewModel?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18651664/

10-12 12:36