【问题标题】:Tab Item remains selected WPF选项卡项保持选中 WPF
【发布时间】:2015-04-29 07:39:23
【问题描述】:

我在 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)
                {

                }
            }
        }

当我移动到其他 tabitem 时,我希望之前的 tab item isSelected 属性变为 false。

【问题讨论】:

    标签: c# wpf tabs


    【解决方案1】:

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

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

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

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

    解决方案的最后一部分是将isOkToChangeTabItem 变量设置为truefalse,具体取决于用户是否可以更改选定的TabItem

    【讨论】:

    • 感谢您的回答。但是我希望用户单击其他选项卡,并且当用户从一个选项卡移到另一个选项卡时,之前单击选项卡项的 IsSelected 属性更改为 false。
    • 我不确定您为什么要这样做,但您使用了错误的方法。您不应该在后面的代码中保留对单个 TabItems 的引用。您应该改为数据绑定。
    猜你喜欢
    • 1970-01-01
    • 2010-12-29
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2021-08-08
    相关资源
    最近更新 更多