【问题标题】:How to make a collapsed tab item visible programmatically in WPF?如何在 WPF 中以编程方式使折叠的选项卡项可见?
【发布时间】:2015-04-11 00:52:13
【问题描述】:

如何在 WPF 中以编程方式使折叠的选项卡项可见?

我创建了一个带有三个选项卡的 tabcontrol 的 xaml 文件,我已将可见性属性设置为 Visible。隐藏和折叠。我还有两个按钮,一个用于将 Tab 2 设置为可见,另一个用于将 Tab 3 设置为可见。 在后面的代码中,我为每个按钮设置了一个事件处理程序。

事件处理程序不编译。

如果有任何建议,我将不胜感激。谢谢!

Here is my MainWindow.xaml

<Window x:Class="WPFTabItemVisibility.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <TabControl>
            <TabItem Header="Tab 1" Visibility="Visible" Content="Tab 1 Content goes here"></TabItem>
            <TabItem Header="Tab 2" Visibility="Hidden" Content="Tab 2 Content goes here"></TabItem>
            <TabItem Header="Tab 3" Visibility="Collapsed" Content="Tab 3 Content goes here"></TabItem>
        </TabControl>

        <Button Content="Make Tab 2 Visible" Margin="20" Height="30" Width="200" Click="Button_Click"/>
        <Button Content="Make Tab 3 Visible" Margin="20" Height="30" Width="200" Click="Button_Click_1"/>
    </StackPanel>
</Window>

这是我的 MainWindow.xaml.cs

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;    


namespace WPFTabItemVisibility
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }

            private void Button_Click(object sender, RoutedEventArgs e)
            {
                TabIndex = 1;
                TabItem.VisibilityProperty = IsVisible;

            }

            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                TabIndex = 2;
                TabItem.VisibilityProperty = IsVisible;
            }
        }
    }

Thank you!        

【问题讨论】:

  • Tabitem 没有 VisibilityProperty 属性。

标签: wpf tabs visibility tabitem


【解决方案1】:

您可以为 tabitem 命名并设置其可见性。参考以下代码。

 <TabControl>
        <TabItem x:Name="tab1" Header="Tab 1" Visibility="Visible" Content="Tab 1 Content goes here"></TabItem>
        <TabItem x:Name="tab2" Header="Tab 2" Visibility="Hidden" Content="Tab 2 Content goes here"></TabItem>
        <TabItem x:Name="tab3" Header="Tab 3" Visibility="Collapsed" Content="Tab 3 Content goes here"></TabItem>
    </TabControl>
  private void Button_Click(object sender, RoutedEventArgs e)
    {
        tab2.Visibility = Visibility.Visible;
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        tab3.Visibility = Visibility.Visible;
    } 

【讨论】:

    【解决方案2】:

    在你的 XAML 中试试这个

     <StackPanel>
        <TabControl>
            <TabItem Header="Tab 1"
                     Visibility="Visible"
                     Name="tab1"
                     Content="Tab 1 Content goes here"></TabItem>
            <TabItem Header="Tab 2"
                     Visibility="Hidden"
                     Name="tab2"
                     Content="Tab 2 Content goes here"></TabItem>
            <TabItem Header="Tab 3"
                     Name="tab3"
                     Visibility="Collapsed"
                     Content="Tab 3 Content goes here"></TabItem>
        </TabControl>
    
        <Button Content="Make Tab 2 Visible"
                Margin="20"
                Height="30"
                Width="200"
                Click="Button_Click" />
        <Button Content="Make Tab 3 Visible"
                Margin="20"
                Height="30"
                Width="200"
                Click="Button_Click_1" />
    </StackPanel>
    

    CodeBehind .cs 文件

     private void Button_Click(object sender, RoutedEventArgs e)
        {
            //TabIndex = 1;
            //TabItem.VisibilityProperty = IsVisible;
            tab2.Visibility = Visibility.Visible;
    
        }
    
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            //TabIndex = 2;
            //TabItem.VisibilityProperty = IsVisible;
            tab3.Visibility = Visibility.Visible;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多