在WPF中绑定Setter属性的值

我整天都在寻找一种在ComboBox上显示默认文本字符串的方法,而我设法找到的最接近的工作是使用水印的示例。 当我的应用程序打开时, ComboBox的Visibility属性设置为Collapsed,然后通过命令显示。 不幸的是,我无法让水印效仿。 这是我正在使用的:

         

{Binding Visible}即使窗口中的其他控件绑定到它并且行为正常也没有任何效果。

  

和viewmodel中的Visible属性:

 public Visibility Visible { get { return _visibile; } set { if (_visibile == value) return; _visibile = value; RaisePropertyChanged(() => Visible); } } 

如何使样式中的setter表现并注册绑定?

如果您需要其他代码,我很乐意提供。


更新: Snoop在TextBlock的Visibility属性上显示绑定错误。 在DataContext选项卡上,它显示“object is null”。 我一直在寻找解决这个问题的方法,但我一直无法弄清楚如何解决这个问题。 如果有人能够把我推向正确的方向,我当然会很感激。 代码来自这里http://archive.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PierreCode&ReleaseId=3546

我不一定要寻找完整的演练,只需要足够的建议来指导我解决问题。

根据您发布的代码,我假设您使用的是此处的Behavior

现在,如果您在上面的链接中下载示例zip,您将获得5个文件,这些文件为您提供了这组Behavior (在Behavior文件夹中找到)。

编辑TextBlockAdorner.cs

在刚刚行之后的构造函数中

 m_TextBlock = new TextBlock { Style = labelStyle, Text = label }; 

 m_TextBlock.DataContext = adornedElement; 

现在在你的Style setter中切换你的Binding

  

你应该完成。

边注:

  • 不要在VM中保存System.Windows.Visibility 。 将VM中的Visibility属性保留为bool ,当您在xaml中Binding它时使用BooleanToVisibilityConverter (直接在xaml中可用。您不必创建一个)
  • 当你定义的Style养成了指定Type="..."的习惯时。 它不仅有助于一目了然地确定哪种Style与哪种Style相关,而且还可以为每个设置者属性保存一些冗余类型限定。

所以像

  

将会

  
  • 最后希望这只是代码中的一个拼写错误,但如果没有尝试遵循您的属性的一些命名约定。 在您的VM中,您的属性称为Visible而它的私有后端是_visibile