问题描述
当使用以下代码双击 DataGrid 时,我正在尝试更改 ContentControl 的内容:
private void homeGrid_MouseDoubleClick(object sender,MouseButtonEventArgs e)
{
if (homeGrid.SelectedItem != null)
{
Document selectedDoc = (Document)homeGrid.SelectedItem;
// Will Crash if this Message Box Removed
MessageBox.Show(selectedDoc.FilePath);
mainWindow.contentControl.Content = new DocumentView(selectedDoc);
}
}
哪个工作正常并且内容已加载,但是如果我删除消息框,我会收到以下错误:
WindowsBase.dll 中发生类型为“system.invalidOperationException”的未处理异常
附加信息:调度程序处理已暂停,但仍在处理消息。
谢谢。
解决方法
我从双击网格中删除了事件并将其放置在一个按钮下,如下所示:
private void Go_Click(object sender,RoutedEventArgs e)
{
if (homeGrid.SelectedItem != null)
{
Document selectedDoc = (Document)homeGrid.SelectedItem;
// Will Crash if this Message Box Added?
// MessageBox.Show(selectedDoc.FilePath);
mainWindow.contentControl.Content = new DocumentView(selectedDoc);
}
}
这已经解决了问题,尽管现在令人困惑地将消息框重新添加会导致相同的异常。可能与这个问题有关:WPF : Dispatcher processing has been suspended,but messages are still being processed