【问题标题】:WPF Bind to ViewModel of another elementWPF 绑定到另一个元素的 ViewModel
【发布时间】:2011-04-11 18:59:52
【问题描述】:

只是一个例子。 CustomControl 有一个 ViewModel,其属性名为“Test”

如何将文本框绑定到该特定属性? 可以访问兄弟 ViewModel 吗?

<TextBox Text="{Binding ElementName=myControl, Path=ViewModel.Test}"></TextBox>
<Controls:CustomControl x:Name="myControl" />

【问题讨论】:

  • 您的 CustomControl 是否真的有一个名为 ViewModel 的 依赖属性
  • 不一定是依赖属性@Henk Holterman
  • 不,它没有,添加一个 DP 让它工作!
  • 我的意思是它也可能是一个普通属性,在这种情况下,控件必须实现 INotifyPropertyChanged 但是当您已经可以绑定到 DataContext 属性时,所有这些都是不必要的

标签: wpf binding viewmodel


【解决方案1】:

Siblings ViewModel 将在其 DataContext 中尝试

<TextBox Text="{Binding ElementName=myControl, Path=DataContext.Test}"></TextBox>
<Controls:CustomControl x:Name="myControl" />

【讨论】:

  • 太棒了,感谢您的帮助,这让我可以在没有 DP 的情况下将 ViewModel 设为私有。
  • 这种方式允许穿插两个不同的 ViewModels,包括在同一行上,并且不会导致 ViewModels 的多个实例
【解决方案2】:

这可能是你需要的-

<TextBox Text="{Binding Source={x:Static local:VieModel}, Path=Test}"></TextBox>
<Controls:CustomControl x:Name="myControl" />

不要忘记添加标记扩展以包含您的类 Viewmodel 所在的命名空间 - xmlns:local="clr-namespace:ViewModel NameSpace"

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 2017-11-22
    • 2023-03-31
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多