将控件重复n次并绑定每个实例

本文关键字:绑定 实例 控件 | 更新日期: 2023-09-27 18:01:12

我正试图找到一种不那么混乱的方法,根据绑定模型的属性值,重复控件n次。但是,n控件的第一个m应该以不同的方式显示,而m绑定到ViewModel的不同属性。为了说明这个问题,假设我有一个这样的ViewModel(n在这里是DisplaymChecked(:

public class MyViewModel : ViewModelBase {
    public int Display { get; set; }
    public int Checked { get; set; }
    /* ... */
}

对于Display = 5, Checked = 3,视图应该呈现以下内容:

(X) (X) (X) ( ) ( )

每个(X)( )应该是相同子视图类型的实例。现在,当用户点击第五个(最后一个(控件时,Checked应设置为5,此时View将显示

(X) (X) (X) (X) (X)

现在,我可以通过挂接一些事件处理程序并在Display发生更改时以编程方式添加和绑定( )实例来实现这一点。我确实想知道是否有一种更简洁、不那么混乱的方法来实现这一点。

将控件重复n次并绑定每个实例

将ViewModel视为视图的模型。因此,如果您想在视图中显示项目的集合,则必须在ViewModel上提供该集合。

在这种情况下,将一个集合添加到ViewModel中,当Display和Checked的值更改时,该集合也会更改。然后将ItemsControl绑定到集合,并为这些项提供ItemTemplate。