来自复选框的WPF控件TabItem可见性

9
我看了以下内容:使用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 我有一些选项卡,我想从复选框控制它们的可见性。
        <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个回答

44
您可以使用内置的BooleanToVisibilityConverter。以下是一个可用的示例:
您可以使用内置的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>

1
我找到了一个非常有用的相关解决方案,可以实现反向可见性绑定(即选中时隐藏): https://dev59.com/y3RB5IYBdhLWcg3wuZbo#5182660 - Mark Adamson
1
我正在尝试在DataGridTextColumn上使用您的建议,但是我遇到了以下错误:> System.Windows.Data Error: 2:无法找到目标元素的控制FrameworkElement或FrameworkContentElement。 BindingExpression:Path = IsChecked; DataItem = null; 目标元素为“DataGridTextColumn”(HashCode = 44515427);目标属性为“Visibility”(类型为“Visibility”)。 - Erik Thysell
1
@MarkAdamson 卓越的示例-我的点赞。感谢您分享您的知识-它为我节省了许多时间(在我已经花费了一些时间后)。此外,它展示了BooleanToVisibilityConverter类的强大之处,许多读者(包括我自己)可以从您的回答中受益。 - nam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接