我有一个看起来像
的ViewModelpublic class MyViewModel
{
public ObservableCollection<UserDefinedFieldBase> CustomFields { get; }
}
public class UserDefinedFieldBase
{
public Point CustomLocation { ... }
}
public class CustomTextField : UserDefinedFieldBase
{
public string Text { ... }
}
因此,每种可能类型的字段都有自己的类型,并包含一个位置(可由用户自定义,因此它是viewModel的一部分,而不是视图。
问题部分: 实施控制的最佳方法是什么?我想过
答案 0 :(得分:1)
这取决于控件的用途是什么,应该如何工作以及UI应该是什么样子。
如果要在视图中显示多个UserDefinedFieldBase
对象,则应使用绑定到视图模型的CustomFields属性的ItemsControl。您仍然可以将ItemsControl添加到具有其他几个依赖项属性的UserControl中。
如果您只想显示UserDefinedFieldBase列表,则可能根本不需要UserControl。您可以使用ItemsControl并使用ItemTemplate定义每个项目的外观。
因此,您应该使用ItemsControl,但是根据您提供的信息,是否需要创建UserControl有点不清楚。如果你想显示的东西不仅仅是带有项目列表的ItemsControl,你可以将ItemsControl包装在UserControl中,并根据需要添加其他几个元素。