Mec*_*h0z 2 .net c# wpf mvvm-light
我有一个对话窗口,在我的Views View-Model中收到一条消息时显示
对话框就在这里http://pastebin.com/BAeCLwhz(我知道我应该有一个空的代码隐藏,但是将它变为空是第二优先,所以现在不是问题!)
我在我的Projects View-Model中创建窗口
MessengerInstance.Register<bool>(this, "Homing", ShowHomingDialog);
private void ShowHomingDialog(bool b)
{
HomingRobot hb = new HomingRobot();
hb.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)
但是当它运行时我得到"调用线程必须是STA"我尝试在项目代码隐藏而不是在viewmodel中调用对话框,但这给了我相同的结果.那么我怎么能让我的窗口弹出而不是"多线程",即使使用消息也是如此?
小智 7
您可以将ShowDialog代码包装在Dispatcher.Invoke中,如下所示
Dispatcher.CurrentDispatcher.Invoke((Action)(() =>
{
HomingRobot hb = new HomingRobot();
hb.ShowDialog();
}));
Run Code Online (Sandbox Code Playgroud)
如果上述代码不起作用,您可以尝试以下操作
Application.Current.Dispatcher.Invoke((Action)(() =>
{
HomingRobot hb = new HomingRobot();
hb.ShowDialog();
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |