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 的路了。下來學習這個。