数据模板我已经声明了以下几种类型:选择基于类型
public interface ITest { }
public class ClassOne : ITest { }
public class ClassTwo : ITest { }
在我的视图模型我声明和初始化以下集合:
public class ViewModel
{
public ObservableCollection<ITest> Coll { get; set; } = new ObservableCollection<ITest>
{
new ClassOne(),
new ClassTwo()
};
}
在我看来,我”米声明如下ItemsControl
<ItemsControl ItemsSource="{Binding Coll}">
<ItemsControl.Resources>
<DataTemplate DataType="local:ClassOne">
<Rectangle Width="50" Height="50" Fill="Red" />
</DataTemplate>
<DataTemplate DataType="local:ClassTwo">
<Rectangle Width="50" Height="50" Fill="Blue" />
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
我希望看到的是一个红色的方形后跟蓝光Ë方,而不是我所看到的是这样的:
我在做什么错?
我想你实际上想要[DataTemplateSelector](https://msdn.microsoft.com/en-us/library/system.windows.controls.datatemplateselector%28v=vs.110%29.aspx ) –
@ChrisW。直接从该链接:_“...如果您有多个DataTemplate用于相同类型的对象,并且您想提供自己的逻辑以根据每个数据对象的属性选择要应用的DataTemplate,则创建一个DataTemplateSelector。* *请注意,如果您拥有不同类型的对象,则可以在DataTemplate **上设置DataType属性。“_ – kskyriacou
对不起,正在考虑[ItemTemplateSelector](https://msdn.microsoft.com/en-us/library/ system.windows.controls.itemscontrol.itemtemplateselector%28v = vs.110%29.aspx),我可能不应该在这里,从冬天开始的美好的一天,我的思绪在别处,我不认为我什至实际上看着整个问题哈哈。春热,欢呼声。 –