我正在构建基于MVVM的wpf应用程序,我遇到了一些问题: 例如,我需要根据模型中的信息构建UI 我的模型包含一个进程列表(从XML文件加载 - 动态),每个进程包含信息(名称,图标路径等)。 foreach进程我需要构建一个单独的按钮(显示correspands进程信息),为了做到这一点,我需要从viewModel检索进程列表到UI(为了执行实际的UI构建),这将force UI引用进程容器...并将破坏MVVM。
有人知道如何在不破坏MVVM的情况下实现这一点吗?
非常感谢。
答案 0 :(得分:7)
使用绑定到ViewModel上的集合的ItemsControl
。在ItemsControl
内定义DataTemplate
,它基本上是基于每个流程构建Button
的包装器。
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding ProcessName}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
答案 1 :(得分:0)
如果您需要做的不仅仅是更改按钮中的文字,您可以使用DataTemplateSelector