C# 选项卡项保持选中状态WPF

C# 选项卡项保持选中状态WPF,c#,wpf,tabs,C#,Wpf,Tabs,我正在WPF中使用TabControl的Tab_SelectionChanged事件。它包含3个选项卡项。在“主页”选项卡上进行工作时,我必须限制用户导航到其他选项卡,即设置和日程安排。在使用事件时,我面临一个问题,即,如果我单击“设置”选项卡,则会显示一个在工作进行中无法导航的弹出窗口;当我单击“计划”选项卡后,单击“设置”选项卡,则会显示两次相同的弹出窗口。原因是“设置”选项卡仍处于选中状态。以下是我的代码: private void tabMHPC_SelectionChanged(obj

我正在WPF中使用TabControl的Tab_SelectionChanged事件。它包含3个选项卡项。在“主页”选项卡上进行工作时,我必须限制用户导航到其他选项卡,即设置和日程安排。在使用事件时,我面临一个问题,即,如果我单击“设置”选项卡,则会显示一个在工作进行中无法导航的弹出窗口;当我单击“计划”选项卡后,单击“设置”选项卡,则会显示两次相同的弹出窗口。原因是“设置”选项卡仍处于选中状态。以下是我的代码:

private void tabMHPC_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            TabControl tab = (TabControl)sender;
            if (tab.SelectedIndex != -1)
            {
                if (tab.SelectedIndex != 4 && tab.SelectedIndex != 1 && tab.SelectedIndex != 0)
                {
                    if (scanStatus == "fixing")
                    {
                        MessageBox.Show(ApplicationInfo.ApplicationName + " is still busy in fixing issues.Please let the fixation complete.", ApplicationInfo.ApplicationName, MessageBoxButton.OK, MessageBoxImage.Information);
                        homeTab.IsSelected = true;
                    }
                    else
                    {
                        MessageBox.Show(ApplicationInfo.ApplicationName + " is still busy scanning issues.Please stop it before you leave the Home tab.", ApplicationInfo.ApplicationName, MessageBoxButton.OK, MessageBoxImage.Information);
                        homeTab.IsSelected = true;
                    }
                }

                else if (tab.SelectedIndex == 0)
                {

                }
            }
        }
我希望在移动其他选项卡项时,上一个选项卡项isSelected属性变为false。

不处理SelectionChanged事件,而应将适当类型的属性数据绑定到:


解决方案的最后一部分是将isOkToChangeTabItem变量设置为true或false,这取决于用户是否可以更改所选TabItem。

谢谢您的回答。但我希望用户单击其他选项卡,并且当用户从一个选项卡移动到另一个选项卡时,以前单击的选项卡项的IsSelected属性将更改为false。我不确定您为什么要这样做,但您使用了错误的方法。您不应该在代码隐藏中保留对单个选项卡项的引用。您应该改为使用数据绑定。
<TabControl SelectedItem="{Binding YourSelectedItemProperty}" ... />
public YourDataType YourSelectedItemProperty
{
    get { return yourSelectedItemProperty; }
    set
    {
        if (isOkToChangeTabItem)
        {
            yourSelectedItemProperty = value;
            NotifyPropertyChanged("YourSelectedItemProperty");
        }
    }
}