zoukankan      html  css  js  c++  java
  • 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 的路了。下来学习这个。

  • 相关阅读:
    在 Windows 上测试 Redis Cluster的集群填坑笔记
    vmware安装黑苹果教程
    微信支付v3发布到iis时的证书问题
    Linux下安装SQL Server 2016(连接篇SQL Server on linux)
    Linux下安装SQL Server 2016(连接篇SQL Server on linux)
    Linux下安装SQL Server 2016(安装篇SQL Server on linux)
    Linux下安装SQL Server 2016(准备篇SQL Server on linux)
    客服端与服务端APP支付宝支付接口联调的那些坑
    ASP.NET MVC]WebAPI应用支持HTTPS的经验总结
    .net平台下C#socket通信(中)
  • 原文地址:https://www.cnblogs.com/leemano/p/6407312.html
Copyright © 2011-2022 走看看