在 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" />
我有一个触发的中继命令,我正在尝试将 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" />