将可见性绑定到DependencyProperty

时间:2013-03-22 10:09:31

标签: c# wpf xaml user-controls

我有一个依赖项属性,允许我显示或隐藏UserControl上的关闭按钮。我没有编译错误,但关闭按钮永远不会消失,下面的代码,我错过了什么?

使用:

进行呼叫
<Toolkit:UC_TitleBar ShowCloseButton="False"/>

.cs代码

public static readonly DependencyProperty ShowCloseButtonProperty = 
    DependencyProperty.Register("ShowCloseButton", 
    typeof(Boolean), 
    typeof(UC_TitleBar), 
    new FrameworkPropertyMetadata(false));

public bool ShowCloseButton
{
    get { return (bool)GetValue(ShowCloseButtonProperty); }
    set { SetValue(ShowCloseButtonProperty, value); }
}

UserControl中的XAML:

<UserControl ... x:Name="ucTitleBar">
<UserControl.Resources>
    <ResourceDictionary>
        <BooleanToVisibilityConverter x:Key="BoolToVis" />
    </ResourceDictionary>
</UserControl.Resources>

<Button Visibility="{Binding Path=ShowCloseButton, ElementName=ucTitleBar, Converter={StaticResource BoolToVis}}" x:Name="Button_Close"/>

如果我在构造函数中手动将ShowCloseButton设置为false,它会像您期望的那样消失。

1 个答案:

答案 0 :(得分:2)

我认为您必须使用如下所示的元素名称绑定。

<Button Visibility="{Binding ElementName=userControl1,Path=ShowCloseButton, Mode=TwoWay, Converter={StaticResource BoolToVis}}" x:Name="Button_Close"/>

如果这不适合您,请与我们分享您的代码。