如何绑定可见性属性

Posted

技术标签:

【中文标题】如何绑定可见性属性【英文标题】:How to bind visibility property 【发布时间】:2012-05-15 19:23:27 【问题描述】:

XAML 代码如下:

<Helper:BooleanVisibilityValueConverter x:Key="BoolToVisible" />
   <Control x:Name="ResizeDecorator" MouseMove="ResizeDecorator_MouseMove" Template=" StaticResource ResizeDecoratorTemplate" Visibility="Binding IsButtonVisible,Converter= StaticResource ResourceKey=BoolToVisible,RelativeSource=RelativeSource  TemplatedParent" />
<Helper:BooleanVisibilityValueConverter x:Key="BoolToVisible" />
<Control x:Name="ResizeDecorator"  MouseMove="ResizeDecorator_MouseMove" Template="StaticResource ResizeDecoratorTemplate" Visibility="Binding IsButtonVisible,Converter=StaticResource ResourceKey=BoolToVisible,RelativeSource=RelativeSource TemplatedParent"  />

ViewModel 代码:

private bool _IsButtonVisible;
public bool IsButtonVisible

    get  return _IsButtonVisible; 
    set
    
        _IsButtonVisible = value;
        NotifyPropertyChanged("IsButtonVisible");
    


IsButtonVisible =false;

谁能告诉我哪里出错了?

【问题讨论】:

xaml 代码在哪里?请正确发布问题,以便人们可以帮助您! xaml 您可以通过编辑在问题中添加代码。这次我会为你做的! 请编辑问题。 “如何在 wpf 中显示/隐藏可见性属性”这句话没有任何意义。 检查输出窗口,你可能会得到一些提示。你能显示转换器代码吗? 【参考方案1】:

我猜问题在于您在模板化父级上绑定到 IsButtonVisible。相反,您需要绑定到模板化父级的 ViewModel/DataContext 上的 IsButtonVisible - 即

Visibility="Binding DataContext.IsButtonVisible,Converter=StaticResource ResourceKey=BoolToVisible,RelativeSource=RelativeSource TemplatedParent"

【讨论】:

以上是关于如何绑定可见性属性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WPF 中的代码绑定 DataGridTextColumn 的可见性属性?

将 XAML 中的可见性绑定到可见性属性

如何将 WPF DataGrid DataColumns 可见性绑定到 UserControl 的 ViewModel 上的属性?

绑定到可见性属性时动画不正确(奇数)

在 UWP 中未检测到绑定可见性属性的变量

WPF - 将 UserControl 可见性绑定到属性