好吧,我知道这有点奇怪,但我正在尝试创建一个数据驱动的面板,它根据我对一个对象的DataTemplate成员重新配置自己。现在我通过使用一个绑定了1个虚假项目的虚拟列表的ItemsControl来完成此操作,以便获得数据模板的单个实例。在ItemsControl中执行此操作似乎很愚蠢,但我想不出任何会使用我的DataTemplate而不尝试对项目列表执行此操作。有人有任何想法吗?
为了清楚起见,我们假设我有一个Widget类:
public class Widget
{
public string Name { get; set; }
public DataTemplate MyTemplate { get; set; }
public List<object> DummyList = new List<object> { new object(); }
}
和Xaml类似:
<ItemsControl ItemsSource={Binding DummyList} ItemTemplate={Binding MyTemplate}/>
然后我可以创建一个小部件集合,并根据对象的状态使用正确的数据模板填充每个小部件。
无论如何,正如我所说,这是有效的......我只是想找到比使用ItemsControl更优雅的解决方案,如果有人知道的话。
答案 0 :(得分:1)
<ContentPresenter ContentTemplate="{Binding MyTemplate}"/>
答案 1 :(得分:1)
如果您的控件(您希望动态修改其内容 - 例如Button内部等)为ContentTemplate="{Binding template}"
,则您可以设置ContentControl
。我发现它经常被“忽视”,因为它不是立即可见或直观的,但可以节省您添加额外的“内容”。
或者您可以按照建议使用ContentControl
- 或演示者。