我对如何在 MVVM 中布局我的代码感到有些困惑——如果我有一个带有相应 VM 类的 UserControl,其他控件应该如何使用我的 UserControl?
消费者应该直接绑定到 VM,还是应该只复制这些属性的子集,我想实际用作 UserControl 的 DependencyProperties?
就此而言,应该将 UserControl 的 VM 注入到 UserControl 的代码隐藏中,还是应该将使用此 UserControl 的任何控件的 VM 包含它作为依赖项并将其绑定到 UserControl?
为了清楚起见:假设我在 UserControl 中有一个 ListBox,并在已经用 MVVM 实现的 Window 中使用它。但我对 UserControl VM 和相应绑定的实现感到困惑。
我认为理想的解决方案是通过 UserControl 中的依赖属性公开 ListBox 的 SelectedItems,然后使用 UserControl 的 Window 将绑定到这些。
或者 Window 的 VM 是否应该将 VM 作为属性进行引用,是否将其注入并直接绑定到其上的属性?
依赖属性应该只在 UserControls 中定义还是可以/应该在 VM 中定义?
我认为窗口会从窗口的 XAML 中绑定,或者通过
{Binding ElementName=myUserControl, Path=SelectedItems}
或者
{Binding Path=MyViewModel.SelectedItems}
通过前者似乎更有意义,因为后者要求 View 知道另一个 VM?