1

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

现在我将PrintWindow在按钮单击或某个命令触发器上使用(调用)来自其他类的这个 obj,我想为这个 PrintWindow(跟随 MVVM)设置文档源。

我该怎么做?我PrintDocument在 PrintWindow.xaml.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看法 ?视图模型??? 百思不得其解

我已经用谷歌搜索了答案 - 但无法与我的问题联系起来。

我是 .com 的新生WPF和新秀MVVM

4

1 回答 1

0

由于您PrintDocumentCommand在您的内部,PrintViewModel但您将此绑定的源设置为PrintDocument-Class 的实例,因此无法找到它,因为 Binding 正在寻找PrintDocumentCommand-Class PrintDocument

如果要从另一个 Window 打开 PrintWindow,请将PrintDocument-Property 和放在另一个 WindowPrintDocumentCommand的 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。

于 2013-09-06T07:13:28.003 回答