在 MVVM Light 中使用 DocumentViewer 查看 .docx 文档

Using a DocumentViewer to view .docx documents in MVVM Light

我有一个触发的中继命令,我正在尝试将 DocumentViewer 设置为在 MVVM 中显示文档。在 WPF 中执行此操作非常简单,但我必须在视图模型中执行此操作。使用下面的代码目前没有任何反应....

XAML代码:

<DocumentViewer HorizontalAlignment="Left" Margin="30,10,0,0"
                Name="documentViewer1" VerticalAlignment="Top" Height="200" Width="600" />

视图模型代码:

   private void FileChooser()
   {
        Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
        dlg.DefaultExt = ".docx";
        dlg.Filter = ".Docx Files (*.docx)|*.docx";
        Nullable<bool> result = dlg.ShowDialog();
        if (result == true)
        {

            string fileName = dlg.FileName;

            Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
            string newXPSDocumentName = String.Concat(System.IO.Path.GetDirectoryName(dlg.FileName), "\",
                       System.IO.Path.GetFileNameWithoutExtension(dlg.FileName), ".xps");
            DocText = ConvertWordDocToXPSDoc(dlg.FileName, newXPSDocumentName).GetFixedDocumentSequence();
         }
    }

DocumentViewer 的视图模型中的 PropertyChangedMethod:

    private IDocumentPaginatorSource _docText;
    public IDocumentPaginatorSource DocText
    {
        get
        {

            return _docText;
        }

        set
        {
            _docText = value;
            RaisePropertyChanged("DocText");
        }
    }

没有显示任何文档,也没有任何错误,我们将不胜感激。

作为我的问题的答案和当你累了时编码的警告......一旦我回来查看我的代码,问题就出在我的 xaml 因为我忘记绑定我的逻辑。总是小东西​​...... 所以正确的 xaml 应该是:

<DocumentViewer HorizontalAlignment="Left" Margin="30,10,0,0"
                Document="{Binding Path=DocText, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Height="200" Width="600" />