【问题标题】:WPF MVVM - Bind to a property from an ancestor view modelWPF MVVM - 绑定到来自祖先视图模型的属性
【发布时间】:2017-10-08 13:15:35
【问题描述】:

我有一组类似于以下内容的视图/视图模型:

CustomDialogView
  CustomView
    CustomListView
      CustomControl
        -SomeCustomProperty

这些视图中的每一个都绑定到适当的视图模型。

我正在尝试将 SomeCustomProperty 绑定到 CustomDialogView 的视图模型上的属性。

最好的方法是什么?我尝试了一些事情,其中​​最有希望的似乎是通过 RelativeSource FindAncestor 设置此属性的绑定,例如:

<CustomControl
    SomeCustomProperty="{
        Binding RelativeSource={RelativeSource FindAncestor,
        AncestorType={x:Type sourcePath:CustomDialogViewModel}},
        Path=SomeCustomProperty,
        Mode=OneWay/>
</CustomControl>

但我在这里根本没有任何约束力。

我不确定它是否有任何影响,但 CustomListView 是由工厂填充的。

【问题讨论】:

    标签: c# wpf mvvm data-binding relativesource


    【解决方案1】:

    FindAncestor 正在寻找一个 View 而不是绑定的 ViewModel。由于这个事实,您需要将视图的类型设置为AncestorType。现在您可以通过将DataContext 添加到Path 来绑定来访问此视图的ViewModel。

    <CustomControl
        SomeCustomProperty="{
            Binding RelativeSource={RelativeSource FindAncestor,
            AncestorType={x:Type sourcePath:CustomDialogView}},
            Path=DataContext.SomeCustomProperty,
            Mode=OneWay/>
    </CustomControl>
    

    【讨论】:

    • 太棒了!谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多