WPF Control TabItem видимость из флажка - PullRequest
8 голосов
/ 09 августа 2011

Я посмотрел: Связывание видимости с использованием DependencyProperty

и http://msdn.microsoft.com/en-us/library/system.windows.controls.booleantovisibilityconverter.aspx http://www.vistax64.com/avalon/240-no-checkbox-checkedchanged.html http://geekswithblogs.net/thibbard/archive/2007/12/10/wpf---showhide-element-based-on-checkbox.checked.aspx

У меня есть несколько вкладок Iхочу контролировать их видимость с помощью флажка, т.е.

        <TabItem Header="Preferences" Name="tabItem4"></TabItem>

В идеале я бы сделал

        <TabItem Header="Preferences" Name="tabItem4">
                <DataTrigger Binding="{Binding ElementName=myCheckBox, Path=IsChecked}" Value="True">
                    <Setter Property="Visibility" Value="True" />
                </DataTrigger>

         </TabItem>

или какой-то другой, но это неправильный синтаксис.Какой самый простой / правильный синтаксис?

1 Ответ

37 голосов
/ 09 августа 2011

Вы можете использовать встроенный BooleanToVisibilityConverter . Вот рабочий образец:

<Window x:Class="WpfApplication16.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:my="clr-namespace:WpfApplication16"
            Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="b2v" />
    </Window.Resources>

    <StackPanel>
        <CheckBox x:Name="chk" Content="Show There" />
        <TabControl>
            <TabItem Header="Hello" />
            <TabItem Header="There" Visibility="{Binding IsChecked,ElementName=chk,Converter={StaticResource b2v}}" />
            <TabItem Header="World" />
        </TabControl>
    </StackPanel>
</Window>
...