1

我可以想到两种方法来实现在细节视图之间共享的依赖属性:

  1. 将它们存储在主视图模型中,并在创建它们时将数据绑定添加到详细视图模型,并在详细视图中绑定到它们。
  2. 根本不要将它们存储在视图模型中,而是使用 FindAncestor 直接绑定到主视图的属性。

每种方法的优缺点是什么,还有其他/更好的选择吗?

编辑:

澄清一下,我有一个自定义控件(从 Control 派生),它为其 DataContext 使用主视图模型。自定义控件的控件模板包含一个 ItemsControl,其中 ItemsSource 绑定到主视图模型中的依赖项属性。此依赖属性是详细视图模型对象的 ObservableCollection。ItemsControl 的项目模板绑定到详细视图模型中的属性。我需要的是由自定义控件(主视图)的控件模板和 ItemsControl 中所有项目的项目模板共享的单个属性。自定义控件将包含一个 Slider 或其他东西来设置值,项目模板将简单地读取它。

抱歉,如果我滥用这些条款,我仍在尝试掌握 MVVM。如果问题仍然不清楚,我可以尝试为一个简单的测试用例编写一些代码。

4

1 回答 1

0

在 View 后面的代码中实现依赖属性是我见过的最流行的做法。这允许您通过数据绑定到 ViewModel 与 DP 交互。实际上没有任何缺点,DP 旨在成为需要实现数据绑定的对象之一。

如果以上不是您所要求的,请在其中包含一个简短的代码示例。

于 2010-05-23T13:11:14.883 回答