WPF TabItem设置Visibility隐藏Control内容
源自MSDN问题。
思路很简答:
TabControl因为只显示TabItem的选择项的control。
所以单独的设置tabitem的control或者使用control的触发器都是不起作用的。
只有用controltemplate。
关键代码如下:
<Style x:Key="c1" TargetType="TabItem">
<Style.Triggers>
<!--关键代码 可以多写一个hidden-->
<DataTrigger Binding="{Binding Visibility,RelativeSource={RelativeSource Mode=Self} }" Value="Collapsed">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Visibility="Collapsed" Content="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<!--关键代码-->
<DataTrigger Binding="{Binding Visibility ,RelativeSource={RelativeSource Mode=Self} }" Value="Visible">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Visibility="Visible" Content="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
通过数据触发器来检测tabitem的visibility的属性来设置control属性。
完整代码
<Window.Resources>
<Style x:Key="c1" TargetType="TabItem">
<Style.Triggers>
<!--关键代码 可以多写一个hidden-->
<DataTrigger Binding="{Binding Visibility,RelativeSource={RelativeSource Mode=Self} }" Value="Collapsed">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Visibility="Collapsed" Content="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<!--关键代码-->
<DataTrigger Binding="{Binding Visibility ,RelativeSource={RelativeSource Mode=Self} }" Value="Visible">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Visibility="Visible" Content="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="t1" BasedOn="{StaticResource c1}" TargetType="TabItem">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=cb1,Path=IsChecked}" Value="true">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="t2" BasedOn="{StaticResource c1}" TargetType="TabItem">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=cb2,Path=IsChecked}" Value="true">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel>
<CheckBox x:Name="cb1">
<CheckBox.Content>
<TextBlock>
<Run Text="Item1 状态:"/>
<Run Text="{Binding ElementName=item1,Path=Visibility,Mode=OneWay}"/>
</TextBlock>
</CheckBox.Content>
</CheckBox>
<CheckBox x:Name="cb2">
<CheckBox.Content>
<TextBlock>
<Run Text="Item2 状态:"/>
<Run Text="{Binding ElementName=item2,Path=Visibility,Mode=OneWay}"/>
</TextBlock>
</CheckBox.Content>
</CheckBox>
</StackPanel>
<TabControl Grid.Column="" >
<TabItem Header="item1" x:Name="item1" Style="{StaticResource t1}" > <Grid Background="Red"> </Grid>
</TabItem>
<TabItem Header="item2" x:Name="item2" Style="{StaticResource t2}">
<Grid Background="Black"> </Grid>
</TabItem>
</TabControl>
</Grid>
截图
WPF TabItem设置Visibility隐藏Control内容的更多相关文章
- WPF后台设置xaml控件的样式System.Windows.Style
WPF后台设置xaml控件的样式System.Windows.Style 摘-自 :感谢 作者: IT小兵 http://3w.suchso.com/projecteac-tual/wpf-zhi ...
- WPF TabItem.Collapse 的问题
WPF TabItem.Collapse 的问题 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-16 感谢 LICEcap ...
- 给父元素与子元素分别设置visibility注意点
由于机顶盒的终端特性原因,不能用display:hidden去做隐藏,就选择了visibility:hidden. 在这里遇到一个现象: 给父元素设置了hidden,但是里面的子元素依然可见.以为只是 ...
- 【C#】关闭 Window 之后,无法设置 Visibility,也无法调用 Show、ShowDialogor 或 WindowInteropHelper.EnsureHandle
问题: 在做WPF项目时,点击一个按钮弹出一个自定义的窗体,然后点击X关闭该窗体,然后再点击按钮想弹出该窗体时,报错:关闭 Window 之后,无法设置 Visibility,也无法调用 Show.S ...
- WPF入门(四)->线形区域Path内容填充之渐变色(LinearGradientBrush)
原文:WPF入门(四)->线形区域Path内容填充之渐变色(LinearGradientBrush) 前面我们介绍到,Path对象表示一个用直线或者曲线连接的图形,我们可以使用Path.Data ...
- Android ListView的header footer设置visibility gone不起作用
常用的ViewGroup,例如LinearLayout,在onMeasure方法内对每个child view执行measure前,会判断child view的visibility是否为gone.如果是 ...
- 制作四个选项卡页 Tab,用户可以通过切换不同的 Tab 页查看不同类别的新闻信息,每个 Tab 有对应的内容版块,点击某个选项卡时,显示对应的内容版块,隐藏其他内容版块,并且为了突出当前的选项卡,还
查看本章节 查看作业目录 需求说明: 制作四个选项卡页 Tab,用户可以通过切换不同的 Tab 页查看不同类别的新闻信息,每个 Tab 有对应的内容版块,点击某个选项卡时,显示对应的内容版块,隐藏其他 ...
- selenium如何高亮某元素和操作隐藏的内容
高亮元素的思路是: 1.找到要高亮的元素 2.对该元素执行js,更改style达到高亮效果. 操作隐藏的内容思路: 1.可以用Actions的moveToElement,使鼠标悬停在触发隐藏内容的元素 ...
- WPF: 自动设置Owner的ShowDialog 适用于MVVM
原文:WPF: 自动设置Owner的ShowDialog 适用于MVVM 原文地址:http://www.mgenware.com/blog/?p=339 WPF中的Windows的ShowDialo ...
随机推荐
- Fragment生命周期函数调用(ViewPager切换方式)
在使用ViewPager时,Google亲爹为我们提供了多种PagerAdapter.其中,与Fragment相关的是FragmentPagerAdapter和FragmentStatePagerAd ...
- MySQL GROUP BY 的问题
拿 employee 示例数据库为例,当进行如下操作时会报错. mysql> SELECT * FROM employees GROUP BY gender; ERROR 1055 (42000 ...
- VUE基础实用技巧
Vue以前听说过,有了解过一点.当时还在热衷于原生JavaScript去写一些方法的封装,不是为啥,就感觉这样很帅,后面多多少少接触了一些JQuery的用法,到现在为止,JavaScript原生封装的 ...
- CSS基本选择器是什么?基本选择器是如何工作
基本选择器介绍 基本选择器又分为六种使用方式:如.通用选择器.标签选择器.类选择器.Id选择器.结合元素选择器.多类选择器. 基本选择器使用说明表. 选择器 语法格式 含义 举例 通用选择器 *{属性 ...
- iOS 国际本地化(对新项目集成和已有项目集成)
第一推荐一篇金先生的博客,受益非浅,在这里真诚的感谢 https://www.jianshu.com/p/7cb0fad6d06f金小白 首先金小白先生把两种方式都做了介绍,第一种我就不在过多详细的讲 ...
- [b0004] Hadoop 版hello word mapreduce wordcount 运行
目的: 初步感受一下hadoop mapreduce 环境: hadoop 2.6.4 1 准备输入文件 paper.txt 内容一般为英文文章,随便弄点什么进去 hadoop@ssmaster:~$ ...
- Linux文件基本命令
Linux文件基本命令学习 操作技巧: 输入文件/目录/命令的前几个字母之后,按下tab键,则自动补全 按上/下,回滚曾经用过的命令 不想执行命令使用:crtl + c 基础命令: ls(查看) 基础 ...
- 初学JavaScript正则表达式(十一)
JavaScript的对象属性 整理自慕课网教学 点此进入
- python3.5.3rc1学习四:类
class calculator: def add(x,y): return x + y print(added) def sub(x,y): return x - y print(sub) def ...
- mysql autocommit
当autocommit为开启状态时,即使没有手动start transaction开启事务,mysql默认也会将用户的操作当做事务即时提交(自动帮我们 db.commit()) autocommit开 ...