我在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。
答案 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
或不