我可以想到两种方法来实现在细节视图之间共享的依赖属性:
- 将它们存储在主视图模型中,并在创建它们时将数据绑定添加到详细视图模型,并在详细视图中绑定到它们。
- 根本不要将它们存储在视图模型中,而是使用 FindAncestor 直接绑定到主视图的属性。
每种方法的优缺点是什么,还有其他/更好的选择吗?
编辑:
澄清一下,我有一个自定义控件(从 Control 派生),它为其 DataContext 使用主视图模型。自定义控件的控件模板包含一个 ItemsControl,其中 ItemsSource 绑定到主视图模型中的依赖项属性。此依赖属性是详细视图模型对象的 ObservableCollection。ItemsControl 的项目模板绑定到详细视图模型中的属性。我需要的是由自定义控件(主视图)的控件模板和 ItemsControl 中所有项目的项目模板共享的单个属性。自定义控件将包含一个 Slider 或其他东西来设置值,项目模板将简单地读取它。
抱歉,如果我滥用这些条款,我仍在尝试掌握 MVVM。如果问题仍然不清楚,我可以尝试为一个简单的测试用例编写一些代码。