【WPF】TabControl禁用部分选项卡
来源:互联网 发布:ubuntu中安装jenkins 编辑:程序博客网 时间:2024/06/03 11:59
需求:使用TabControl分页栏控件时,由于部分分页下的内容尚未开发完成,不希望用户能够点击切换到那些分页。
百度搜到的一些做法比较麻烦,或者说是直接把分页移除的,这些都不符合需求。需求要的是能看到不可用的选项卡,即要能让用户知道未来会有这些功能,现在只是先占着坑。
例如,下面这个TabControl(已自定义样式),现在要求只有第二、第三个分页可以被点击切换,点击其他分页时弹窗提示,该功能正在开发中。
由于TabControl有一个SelectionChanged选项卡切换的事件,所以想到一个简单是实现方法:
默认先打开第二个分页,保存当前选中的可用分页,点击到不可用的选项卡时,定位到之前那个可用的分页。
后台代码如下:
[Export(typeof(IUiView))]public partial class UiWindow : UserControl, IUiView{ private readonly Lazy<UiViewModel> uiViewModel; private int currentIndex = 1; // 记录tabControl当前选项卡角标 public UiWindow() { InitializeComponent(); // 暂时屏蔽未开发完成的分页 tabControl.SelectedIndex = 1; tabControl.SelectionChanged += TabControl_SelectionChanged; } private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (tabControl.SelectedIndex != 1 && tabControl.SelectedIndex != 2) // 1和2是当前版本可用的分页角标 { tabControl.SelectedIndex = currentIndex; MessageBox.Show("该功能正在努力开发中\n 敬请期待!"); } else { currentIndex = tabControl.SelectedIndex; } }}
2017.1.4更新:
发现之前的做法有一个Bug,因为点击切换到不可用分页时,tabControl.SelectedIndex = currentIndex 使得TabControl_SelectionChanged回调又被触发了一次(一共两次)。
现在改为如下:
直接在后台的Init()函数中禁用分页
// 暂时屏蔽未开发完成的分页ItemCollection coll = tabControl.Items;for (int i = 0; i < coll.Count; i++){ if (i == 1 || i == 2) { (coll[i] as TabItem).IsEnabled = true; } else { (coll[i] as TabItem).IsEnabled = false; }}
这种做法的缺点是没法设置点击到被禁用页面时的友好提示,因为该页面已被禁用,不会进入TabControl_SelectionChanged回调。
参考:
https://social.msdn.microsoft.com/Forums/vstudio/en-US/b6881584-d578-42a0-baf7-1582a2f88f32/dynamically-enable-disable-tabitem-in-wpf-tab-control?forum=wpf
- 【WPF】TabControl禁用部分选项卡
- 【WPF】TabControl垂直分页栏/选项卡
- WPF 中关于TabControl选项卡中UserControl的问题
- TabControl 选项卡
- 选项卡控件TabControl
- 更改tabControl选项卡颜色
- 修改TabControl选项卡名字
- tabControl编辑选项卡图标
- C# TabControl 不显示选项卡标题
- C# TabControl 不显示选项卡标题
- C# TabControl 不显示选项卡标题
- Tabcontrol中隐藏显示某个选项卡
- 选项卡控件TabControl(分组类控件)
- Tabcontrol中隐藏显示某个选项卡
- TabControl 显示和隐藏选项卡
- C# TabControl控件,隐藏选项卡
- WPF TabControl 美化
- WPF TabControl 样式
- QLinearGradient 绘制渐变效果
- Java内部类
- Android笔记:Android TextView实时显示系统时间
- ViewPager 详解(一)---基本入门
- Intellij IDEA svn的使用记录
- 【WPF】TabControl禁用部分选项卡
- Testlink
- 简单的弹幕
- C# 系统托盘图标
- 文章标题
- react-native-auto-expanding-textinput 根据输入的内容自增长高度
- Struts2和SpringMvc的区别
- Android跳转到通讯录获取用户名称和手机号码的实现思路
- 在mac下安装windows双系统