Mam ogłosił następujące typy:Wybór szablonu danych w oparciu o typ
public interface ITest { }
public class ClassOne : ITest { }
public class ClassTwo : ITest { }
W moim viewmodel mam uznającą i inicjowanie następujący zbiór:
public class ViewModel
{
public ObservableCollection<ITest> Coll { get; set; } = new ObservableCollection<ITest>
{
new ClassOne(),
new ClassTwo()
};
}
Moim zdaniem ja” m deklarowania następujące 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>
Czego spodziewać się czerwony kwadrat następnie blu e kwadratowe, zamiast tego, co widzę, jest następujący:
Co robię źle?
myślę, że rzeczywiście chce [DataTemplateSelector] (https://msdn.microsoft.com/en-us/library/system.windows.controls.datatemplateselector%28v=vs.110%29.aspx) –
@ ChrisW. Bezpośrednio z tego linku: _ ... utwórz DataTemplateSelector, gdy masz więcej niż jeden DataTemplate dla tego samego typu obiektów i chcesz dostarczyć własną logikę, aby wybrać DataTemplate do zastosowania w oparciu o właściwości każdego obiektu danych. * * Zauważ, że jeśli masz obiekty różnych typów, możesz ustawić właściwość DataType na DataTemplate **. "_ – kskyriacou
Przykro nam, koleś, myślałeś [ItemTemplateSelector] (https://msdn.microsoft.com/en-us/library/ system.windows.controls.itemscontrol.itemtemplateselector% 28v = vs.110% 29.aspx), prawdopodobnie nie powinienem tu być, pierwszy miły dzień od zimy i mój umysł jest gdzie indziej, nie sądzę, żebym nawet faktycznie spojrzał na całe pytanie lol. Wiosenna gorączka, okrzyki. –