скрытая вкладка видимости - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть 3 элемента табуляции для реализации. Когда программа запустится, я бы хотел, чтобы пользователь мог видеть только tab1 и скрывать tab 2 и tab 3.

что-то подобное происходит при выполнении программы:

public Window1()
{   
    InitializeComponent();

    // I need tabs 2 and 3 to be hidden   
}

Тогда у меня есть кнопка на вкладке 1. Когда пользователи нажимают на нее, вкладка 2 появляется, но все еще скрывает вкладку 3

private void Button1_Click(object sender, RoutedEventArgs e)
{
    tabcontrol1.SelectedIndex = 1;
    //need some code to show tab 2
}

И у меня есть кнопка на вкладке 2, чтобы показать вкладку 3, а затем все вкладки видны

private void Button2_Click(object sender, RoutedEventArgs e)
{
    tabcontrol1.SelectedIndex = 2;
    // need some code to show tab 3    
}

Мой код XAML:

<TabControl Name="Tabcontrol1" Margin=" 5" SelectedIndex="0">
    <TabItem Header="Directories">
        <Grid Width="1185" Height="945" Background="White" >
            <Label Height="28" HorizontalAlignment="Right" 
                    Margin="0,0,25,0" Name="label11" VerticalAlignment="Top"  
                    Width="120">Step 1 of 2</Label>
        </Grid>
    </TabItem>
    <TabItem Header="Properties" Opacity="1" Name="Properties">
        <Grid Width="1185" Height="945" Background="White" >
            <Button Height="32" Name="Button1" VerticalAlignment="Bottom" 
                    HorizontalAlignment="Right" Width="82" Click="Button1_Click" 
                    Margin="0,0,41,49">Build</Button>
        </Grid>
    </TabItem>
    <TabItem Header ="Output">
        <Grid Width="1185" Height="945" Background="White">
            <Button Height="32" Name="Button2" VerticalAlignment="Bottom" 
                    HorizontalAlignment="Right" Width="82" Click="Button2_Click" 
                    Margin="0,0,41,49">Build</Button>
        </Grid>
     </TabItem>
</TabControl>

Я в замешательстве, потому что я могу выбрать только вкладку, используя:

tabcontrol1.SelectedIndex = 1;

Я думал о реализации

tabcontrol1.SelectedIndex.Visibility = Hidden;

пожалуйста, совет, спасибо.

Ответы [ 2 ]

6 голосов
/ 22 февраля 2011

Первоначально установите Visibility на 2-й и 3-й вкладках на Collapsed.А также дайте им имя, чтобы иметь возможность доступа к ним в коде позади.

<TabItem Name="TabItem2" Header="Properties" Opacity="1" Name="Properties" Visibility="Collapsed">
...
<TabItem Name="TabItem3" Header ="Output" Visibility="Collapsed">
...

И измените свой код нажатия кнопки на следующее:

private void Button1_Click(object sender, RoutedEventArgs e)
{
    tabcontrol1.SelectedIndex = 1;
    //need some code to show tab 2
    TabItem2.Visibility = Visibility.Visible;
}

private void Button2_Click(object sender, RoutedEventArgs e)
{
    tabcontrol1.SelectedIndex = 2;
    // need some code to show tab 3 
    TabItem3.Visibility = Visibility.Visible;   
}
1 голос
/ 22 февраля 2011

Я не правильно понял, в чем ваша проблема. На основании моего понимания, вы хотите динамически показывать tabitems внутри tabcontrol. Проверьте, работает ли приведенный ниже код

<Grid x:Name="container">
        <TabControl Name="Tabcontrol1" Margin=" 5" SelectedIndex="0">
            <TabItem Name="Tab1" Header="Directories">
                <Button Height="32" Name="Button1" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="82" Click="Button1_Click" Margin="0,0,41,49">Build</Button>
            </TabItem>
            <TabItem Header="Properties" Opacity="1" Name="Properties" Visibility="Collapsed">
                    <Button Height="32" Name="Button2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="82" Click="Button2_Click" Margin="0,0,41,49">Build</Button>
            </TabItem>
            <TabItem Header="Output" Name="Tab3" Visibility="Collapsed">
                    <Button Height="32" Name="Button3" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="82" Click="Button3_Click" Margin="0,0,41,49">Build</Button>
            </TabItem>
        </TabControl>


    </Grid>

и в коде позади

 private void Button1_Click(object sender, RoutedEventArgs e)
        {
            Properties.Visibility = Visibility.Visible;
            Tabcontrol1.SelectedItem = Properties;
        }

        private void Button2_Click(object sender, RoutedEventArgs e)
        {
            Tab3.Visibility = Visibility.Visible;
            Tabcontrol1.SelectedItem = Tab3;
        }
...