• 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 的路了。下来学习这个。

  • 相关阅读:
    删除表
    删除表格的行或者列
    给word中的表格增加行或者列
    向word中插入表格
    设置图片的对齐方式
    day19作业
    Python入门day19——叠加多个装饰器、yield、三元表达式、生成式、函数的递归调用
    day18作业
    Python入门day18——有参装饰器
    Python入门day18——迭代器生成器
  • 原文地址:https://www.cnblogs.com/leemano/p/6407312.html
Copyright © 2020-2023  润新知