非常に奇妙な問題が発生しています。WPF には、3 つの tabItems を含む tabControl があります。「OneWayToSource」モードで、tabControl の SelectedIndex からビューモデル クラス内のプロパティへのバインディングを作成しました。
XAML コードは次のとおりです。
<TabControl Name="mainTabControl" SelectedIndex="{Binding SelectedTabIndex, Mode=OneWayToSource}" >
<TabItem Header="Tab 01" Name="tab01"> ... </TabItem>
<TabItem Header="Tab 02" Name="tab02"> ... </TabItem>
<TabItem Header="Tab 03" Name="tab03"> ... </TabItem>
</TabControl>
そして私のviewModelでは:
private int m_selectedTabIndex;
public int SelectedTabIndex
{
get
{ return m_selectedTabIndex; }
set
{
SetAndNotify(ref m_selectedTabIndex, value, () => SelectedTabIndex);
SelectedTabChanged();
}
}
private void SelectedTabChanged()
{
// Some code
}
ご覧のとおり、ビューモデルのSelectedTabIndex
プロパティが変更されるたびにSelectedTabChanged()
メソッドが実行され、これは完全に機能します。
私の奇妙な問題は、たとえばメソッドSystem.Windows.MessageBox.Show("Some Text")
内でメッセージを表示するSelectedTabChanged()
と、別の tabItem を選択すると、以前に選択したタブがブロックされ、選択されているように見えますが、永続的に選択されたままになり、そのコンテンツが表示されなくなります。
明確にするために:前に述べたように、この奇妙な問題はモーダルウィンドウが表示されている場合にのみ発生します
なぜ起こっているのですか?この問題を解決するにはどうすればよいですか?
私は自分自身を明確に説明したことを願っています。
前もって感謝します。