【发布时间】:2014-09-16 14:06:54
【问题描述】:
我有一个用 WPF (MVVM) 编写的应用程序,它会根据某些条件创建不同 UserControls 的实例,这些 UserControls 是完全独立的,用于显示某些信息。他们里面有一些自定义逻辑,比如计时器等等,所以我不能使用模板。
现在我面临的问题是我想在 ViewModel 中创建一个用户控件列表,并将主机 UI 绑定到它。问题是我不知道如何绑定和绑定什么。在非 MVVM 项目中,您只需获取要放置控件的布局,并将它们作为子项添加到那里。在 MVVM 应用程序中,我不知道该怎么做。我想象有一个带有 ItemsSource 的 WrapPanel,它将添加所有控件并根据需要根据 UserControls 调整自身大小。
有人可以提出解决方案吗?
编辑: 我的 ViewModel 现在公开了一个 IMyDriver 的 ObservableCollection。所以这就是我的想法,打破一点 MVVM 以获得我接下来描述的内容: 现在,每个 IMyDriver 都可以是不同类型的驱动程序,并且可以实现不同的其他接口。我需要 UI 来创建特定的用户控件,这些用户控件知道如何根据这些驱动程序的功能获得最大的收益。简而言之,UserControls通过驱动程序连接到设备,用于轮询数据。每个 UserControl 都以特定的方式进行操作。
【问题讨论】:
-
我想在 ViewModel 中创建一个用户控件列表...不,不,不!这不是 MVVM 的工作原理,所以要么改变你的方法,要么从你的问题中删除那个MVVM 标签......你不能同时拥有它。
-
DataTemplates 将 VM 类型链接到 UserControls。巴姆。完成。
-
威尔,这个答案以及谢里登的答案让我朝着正确的方向思考。非常感谢!
标签: wpf xaml mvvm user-controls