我在哪里可以使用DataTemplate而不是转发器类型的控件?

时间:2013-03-31 20:55:34

标签: wpf xaml datatemplate

好吧,我知道这有点奇怪,但我正在尝试创建一个数据驱动的面板,它根据我对一个对象的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更优雅的解决方案,如果有人知道的话。

2 个答案:

答案 0 :(得分:1)

<ContentPresenter ContentTemplate="{Binding MyTemplate}"/>

答案 1 :(得分:1)

如果您的控件(您希望动态修改其内容 - 例如Button内部等)为ContentTemplate="{Binding template}",则您可以设置ContentControl。我发现它经常被“忽视”,因为它不是立即可见或直观的,但可以节省您添加额外的“内容”。

或者您可以按照建议使用ContentControl - 或演示者。

相关问题