【问题标题】:Setting binding of subproperty设置子属性的绑定
【发布时间】:2012-01-09 12:00:49
【问题描述】:

我的用户控件上有一个元素

<myControls:MonitorWindow x:Name="WindowFrame" MinHeight="400" />

我需要更改它的子属性

MonitorWindow.CloseButton.Visibility.

是否可以将 ViewModel 中的属性绑定到该属性?

一种方法是 ElementBinding 和 TwoWay 模式来伪造字段,但这不是很好。

【问题讨论】:

  • 您希望 Visibility 属性成为绑定的来源吗?通常,情况正好相反。您将可见性绑定到 ViewModel 上的属性,例如:

标签: silverlight xaml binding mvvm


【解决方案1】:

您应该创建一个类型可见性的Dependency Property,以便它可以绑定到您的控件并可以从控件外部进行设置。

例如,让依赖属性命名为 CloseButtonVisibility 存在于您的用户控件的代码隐藏中(使用propdp 然后press TAB or double TAB 作为 sn-p 快捷方式来创建一个)

尽在掌控

<UserControl Name="Control">
    <Button Visibility="{Binding Path=CloseButtonVisibility,ElementName=Control,Mode=TwoWay}"></Button>
</UserControl>

使用控件时

<myControls:MonitorWindow x:Name="WindowFrame" MinHeight="400" CloseButtonVisibility="Hidden" />

这可能会有所帮助... :)

【讨论】:

    【解决方案2】:

    你应该做两件事:

    首先,您应该将 CloseButtonVisibility 作为属性公开。

    第二件事是,为了将值绑定到该属性,您应该将此属性定义为 Dependcy 属性,有关如何定义依赖属性的说明,请参见以下链接: UNDERSTANDING: DEPENDENCY PROPERTIES IN SILVERLIGHT

    祝你好运, 利奥

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多