我遇到了一个非常奇怪的问题:在 WPF 中,我有一个包含 3 个 tabItems 的 tabControl。我已经在“OneWayToSource”模式下将 tabControl 的 SelectedIndex 绑定到我的 viewModel 类中的一个属性。
这是 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
}
如您所见,每次我的 viewModel 的SelectedTabIndex
属性发生更改时,SelectedTabChanged()
都会执行该方法,这非常有效。
我奇怪的问题是:当我使用例如System.Windows.MessageBox.Show("Some Text")
在我的SelectedTabChanged()
方法中显示一条消息时,我选择了另一个 tabItem 并且之前选择的选项卡被阻止,它看起来像被选中,但它仍然被永久选中,我再也看不到它的内容了。
澄清一下:正如我之前所说,这个奇怪的问题只在显示模式窗口时发生
为什么会发生?我该如何解决这个问题?
我希望我能清楚地解释自己。
先感谢您。