【问题标题】:WPF Binding to property and setting anotherWPF绑定到属性并设置另一个
【发布时间】:2009-07-23 14:22:07
【问题描述】:

我在我的 WPF 应用程序中使用 MVVM。
我有一个窗口,里面有一个视图。在该视图中,可以更改一个值,我会将其绑定到主窗口中的 TextBox:

<TextBox
    Text="{Binding Path=myViewModel.MyValue">
</TextBox>

现在我需要将此 myViewModel.MyValue 绑定到我的主窗口视图模型中的一个属性,以便我可以使用它在集合中执行过滤器。

每当 myViewModel.MyValue 发生变化时,我可以使用 Setter 或任何其他设置我的 MainViewModel.Property 值的东西吗?
如果是这样,我该怎么做?

【问题讨论】:

    标签: wpf binding


    【解决方案1】:

    您的“子”视图的视图模型是否存在于“主”窗口的视图模型中?如果是这样,您可以简单地通过 setter 触发这些事情。

    如果没有,您也许可以使用祖先绑定并从 UI 驱动它。这并不理想(我假设您正试图避免父视图和子视图相互了解特定知识),但它会起作用。

    这是一个非常简单的 RelativeSource 示例。这些可能会变得相当复杂。谨慎使用: http://www.charlespetzold.com/blog/2006/04/101102.html

    如果您确实决定采用RelativeSource 路线,您应该知道如何调试绑定。为此使用this link。她为此提供了几种技术,但如果您使用的是 .NET 3.5,我建议您使用该方法(接近文章结尾处)。

    【讨论】:

      【解决方案2】:

      再次使用绑定,这次来自代码。看一下 FrameworkElement.SetBinding 成员函数。

      【讨论】:

      • 这不是您在 MVVM 应用程序中要做的事情。 ViewModel 不知道 View,反之亦然。
      猜你喜欢
      • 2011-04-13
      • 1970-01-01
      • 2015-06-29
      • 2018-01-13
      • 1970-01-01
      • 2021-09-13
      • 2010-11-14
      • 1970-01-01
      • 2015-09-23
      相关资源
      最近更新 更多