WPF TabItem.Collapse 的问题
运行环境:Window7 64bit,.NetFramework4.61,C# 6.0; 编者:乌龙哈里 2017-02-16
感谢 LICEcap 的作者,弄了个很小巧好用的桌面录制gif软件。
我用了一个 WPF 的 TabControl 的控件,下面弄了两个 TabItem,设想是点击一个按钮后,出现一个,隐藏另外一个,结果发现 TabItem 里面的内容 没有显示。上例子:
xaml:
<Window x:Class="学习WpfTabItem.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="200" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="32"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ToolBar Grid.Row="0">
<Button Name="btn1" Content="显示1" Click="btn1_Click"/>
<Button Name="btn2" Content="显示2" Click="btn2_Click"/>
</ToolBar>
<TabControl Name="tbl" Grid.Row="1" >
<TabItem Name="tbm1" Header="1" >
<TextBlock Text="1111" Visibility="{Binding Path=Visibility,ElementName=tbm1}"/>
</TabItem>
<TabItem Name="tbm2" Header="2" >
<TextBlock Text="22222" Visibility="{Binding Path=Visibility,ElementName=tbm2}"/>
</TabItem>
</TabControl>
</Grid>
</Window>
后端 c# 代码:
using System.Windows;
namespace 学习WpfTabItem
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btn1_Click(object sender, RoutedEventArgs e)
{
if (tbm2.Visibility == Visibility.Visible)
{
tbm2.Visibility = Visibility.Collapsed;
}
tbm1.Visibility = Visibility.Visible;
}
private void btn2_Click(object sender, RoutedEventArgs e)
{
if (tbm1.Visibility == Visibility.Visible)
{
tbm1.Visibility = Visibility.Collapsed;
}
tbm2.Visibility = Visibility.Visible;
}
}
}
TabItem 里面两个 TextBlock 的显示属性是我看见不能显示,专门绑定的,去掉绑定,tbm1 的 TextBlock 直接一直显示。看看上面的程序运行结果。
上网查了一下,都没有很好的解决办法,有人更说是 bug。 看来只有走后台手工代码描绘 tabitem 的路了。下来学习这个。