我在C#中有windows表单应用程序。 我有WPF用户控件的类库。我在使用Element Host的Windows Form App中使用它。现在在WPF用户控件中我需要使用MessageBox显示一条消息。它工作但在Windows窗体应用程序的主窗体上显示无模式。我想将此消息框显示为模型。
请帮助。
编辑:
让我通过例子解释: 我有“WindowsFormApp1” 另一个是“WPFUserCtrlLib”,它是类库。它有UserControl命名为“WPFUserCtrl”所以我有“WPFUserCtrl.xaml”和“WPFUserCtrl.xaml.cs”文件。 在WindowsFormApp1中,我将MainForm命名为“Form1”。在Form1中,我使用“元素主机”使用“WPFUserCtrl”。 现在有一些逻辑存在于“WPFUserCtrl.xaml.cs”中说
String ErrorMsg=“Error There”;
if(condition)
{
//Do Task
}
else
{
MessageBox.Show(ErrorMsg);
}
所以在这里我需要显示ErrorMsg。显示此MessageBox时,它是无模式的,因为我能够访问“Form1”上的控件,如菜单,按钮和所有。
答案 0 :(得分:0)
您是否将WPF窗口的所有者设置为winforms窗口?
根据this链接,为了使模式对话框在winforms中工作,这是必要的。
var window = new WpfWindow();
var helper = new WindowInteropHelper(window);
helper.Owner = this.Handle;
window.ShowDialog();
答案 1 :(得分:0)
我已经尝试了很多。无法获得解决方案所以在这里发布问题并继续尝试使用diff方法。现在我找到了解决方案。
解决方案是:使用Dispatcher.Invoke
if(condition)
{
//Do Task
}
else
{
Dispatcher.Invoke(new Action(() => {
MessageBox.Show(ErrorMsg);
})
);
}
现在我的MessageBox是模型。