复选框中的 WPF 控件 TabItem 可见性

Posted

技术标签:

【中文标题】复选框中的 WPF 控件 TabItem 可见性【英文标题】:WPF Control TabItem visibility from a checkbox 【发布时间】:2011-10-22 21:20:16 【问题描述】:

我看了: Visibility Binding using 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】:

您可以使用内置的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>

【讨论】:

我找到了一个非常有用的相关解决方案,它允许反向可见性绑定(即选中时隐藏):***.com/a/5182660/538403 我正在尝试在 datagridtextcolumn 上使用您的建议,但我只收到以下错误:> System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。绑定表达式:路径=IsChecked;数据项=空;目标元素是“DataGridTextColumn”(HashCode=44515427);目标属性是“可见性”(类型“可见性”) @MarkAdamson 优秀的例子——我的赞成票。感谢您分享您的知识 - 它为我节省了很多时间(在我已经花了一些时间之后)。此外,它显示了BooleanToVisibilityConverter Class 的强大功能,您的回复的许多读者(比如我自己)都可以从中受益。

以上是关于复选框中的 WPF 控件 TabItem 可见性的主要内容,如果未能解决你的问题,请参考以下文章

wpf 如何动态向tabitem添加控件

我在用wpf做一个tabControl的控件 但是tabItem不能填满上半部分 如图所示 求解决之道

WPF自适应可关闭的TabControl 类似浏览器的标签页

WPF自适应可关闭的TabControl 类似浏览器的标签页(转)

WPF - TabItem 中的“填充”或标题和内容之间的距离

如何在 WPF 中的 tabItem 中集中控制