1

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

4

2 回答 2

1
<ContentPresenter ContentTemplate="{Binding MyTemplate}"/>
于 2013-03-31T21:04:11.120 回答
1

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

或者您可以使用ContentControl- 或已建议的演示者。

于 2013-03-31T21:09:08.943 回答