将两个用户控件绑定到ViewModel的同一个DataContext?

时间:2010-01-29 16:54:00

标签: wpf data-binding mvvm user-controls datacontext

我正在使用UserControl,它由Chart面板和另一个操作某些图表数据的区域组成,即图表控件(更改图表的颜色,启用或禁用其他内容)图表等。)。

我使用ViewModel来管理图表及其数据,但我想也许将图表控件区域中的单独用户控件放在一边以防止我的xaml变大并分离出来组件。

如果我这样做,因为控件需要操纵来自Chart ViewModel的数据,我应该如何处理它?我可以将DataContextChart控件绑定到DataContext的{​​{1}},这样我只有一个Chart吗?我应该给我的图表控件自己的viewmodel然后让图表面板和图表控件viewmodels以某种方式说话吗?

或者只是忘记单独的用户控件并将所有东西都放入一个大的viewmodel / xaml控件中?

在这种情况下人们会推荐什么?

1 个答案:

答案 0 :(得分:3)

您绝对可以将两个UserControl绑定到同一个ViewModel。您可以将每个DataContext绑定到同一个对象实例,或者我认为您可以将一个控件的DataContext绑定到另一个控件的DataContext并将其绑定到您的ViewModel

如果你开始使用视图和viewmodel的工作实现,并且你觉得XAML变得笨拙,我同意你应该将XAML分成多个视图。没有任何理由意味着您需要将ViewModel实施分开,直到您感觉它变得不连贯或太大。现在将它分开只会增加复杂性,因为你建议他们无论如何都需要进行沟通。

您可以考虑从图表控件区域中创建UserControl开始,并将该控件嵌入现有控件中。然后,您不必修改任何使用图表控件的屏幕。