単体テスト内から ShowDialog 呼び出しを実行すると、
System.Windows.Markup.XamlParseException: 現在の SynchronizationContext をタスク スケジューラとして使用できない可能性があります。
メインからの実行は正常に機能します。これはテスターの通常の使用法ではないことは承知していますが、ダイアログを選択してボタンをクリックし、テスト データで実行して、ダイアログが機能するかどうかを確認できることは価値があります。ただし、このバグにより、実行できません。
「適切な」スレッドでダイアログコードを実行するためのトリックはありますか?
単体テスト コードは次のとおりです。
[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>