我试图找出一种不那么混乱的方式来重复控件 n 次,具体取决于绑定模型的属性值。然而, n 控件的第一个 m 应该以不同方式显示,而 m 绑定到ViewModel的不同属性。为了说明问题,请考虑我有一个像这样的ViewModel( n 是Display
和 m Checked
这里):
public class MyViewModel : ViewModelBase {
public int Display { get; set; }
public int Checked { get; set; }
/* ... */
}
对于Display = 5, Checked = 3
,视图应该呈现以下内容:
(X) (X) (X) ( ) ( )
每个(X)
和( )
都应该是同一子视图类型的实例。现在,当用户点击第五个(最后一个)控件时,Checked
应设置为5,现在将显示视图
(X) (X) (X) (X) (X)
现在,我可以通过挂钩一些事件处理程序并在( )
更改时以编程方式添加和绑定Display
实例来实现此目的。我确实想知道是否有更简洁,更简洁的方法来实现这一点。
答案 0 :(得分:2)
将ViewModel视为View的模型。因此,如果要在视图中显示项目集合,则必须在ViewModel上提供该集合。
在这种情况下,向ViewModel添加一个集合,该集合在Display和Checked的值发生更改时会发生变化。然后将ItemsControl绑定到集合并为项目提供ItemTemplate。