數據模板我已經聲明瞭以下幾種類型:選擇基於類型
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),我可能不應該在這裏,從冬天開始的美好的一天,我的思緒在別處,我不認爲我什至實際上看着整個問題哈哈。春熱,歡呼聲。 –