WPF TabItem.Collapse 的問題


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM