选项卡项目保持选中状态WPF

时间:2015-04-29 07:39:23

标签: c# wpf tabs

我在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属性在我移动其他tabitem时变为false。

1 个答案:

答案 0 :(得分:0)

您应该将合适类型的属性数据绑定到TabControl.SelectedItem property,而不是处理SelectionChanged事件:

<TabControl SelectedItem="{Binding YourSelectedItemProperty}" ... />

执行此操作后,您将能够停止TabItem被更改:

public YourDataType YourSelectedItemProperty
{
    get { return yourSelectedItemProperty; }
    set
    {
        if (isOkToChangeTabItem)
        {
            yourSelectedItemProperty = value;
            NotifyPropertyChanged("YourSelectedItemProperty");
        }
    }
}

解决方案的最后一部分是根据用户是否可以更改所选的isOkToChangeTabItem或不