当我从单元测试中运行 ShowDialog 调用时,我得到一个
System.Windows.Markup.XamlParseException:当前 SynchronizationContext 不能用作任务调度程序。
从 main 运行正常。我意识到这不是测试仪的正常使用,但是能够选择一个对话框并单击一个按钮以使用测试数据运行它以查看对话框是否有效是很有价值的。但是这个错误阻止我运行它。
在“正确”线程上运行对话框代码是否有技巧?
这是单元测试代码:
[Fact]
static public void Draw2()
{
var uiThread = new Thread(Draw20);
uiThread.SetApartmentState(ApartmentState.STA);
uiThread.Start();
// Wait for the UI thread to finish
uiThread.Join();
}
static void Draw20()
{
ModernUIApp1.MainWindow window = new MainWindow();
System.Windows.Forms.Integration
.ElementHost
.EnableModelessKeyboardInterop(window);
window.ShowDialog();
window = null;
}
窗口代码:>
<mui:ModernWindow.MenuLinkGroups>
<mui:LinkGroup DisplayName="welcome">
<mui:LinkGroup.Links>
<mui:Link DisplayName="home" Source="/Pages/Home.xaml" />
<mui:Link DisplayName="my page" Source="/Pages/BasicPage.xaml" />
</mui:LinkGroup.Links>
</mui:LinkGroup>
<mui:LinkGroup DisplayName="settings" GroupName="settings">
<mui:LinkGroup.Links>
<mui:Link DisplayName="software" Source="/Pages/Settings.xaml" />
</mui:LinkGroup.Links>
</mui:LinkGroup>
</mui:ModernWindow.MenuLinkGroups>
<mui:ModernWindow.TitleLinks>
<mui:Link DisplayName="settings" Source="/Pages/Settings.xaml" />
</mui:ModernWindow.TitleLinks>
</mui:ModernWindow>