Предположим, у меня есть класс телефона с его стоимостью:
public class Phone
{
public int Price { get; set; }
pulic Phone(int price)
{
Price = price;
}
}
И два-класса наследника:
public class Xiaomi : Phone { public Xiaomi(int price) : base(price) { }}
public class IPhone : Phone { public IPhone(int price) : base(price) { }}
Если бы я хотел вывести на экран коллекцию телефонов, я бы создал ObservableCollection во ViewModel окна:
public ObservableCollection<Phone> Phones{ get => _Phones; set => _Phones= value; }
private ObservableCollection<Phone> _Phones = new();
А на форме бы определил элемент ItemsControl:
<ItemsControl ItemsSource="{Binding Phones}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type Xiaomi}">
<TextBlock Text="Этот телефон Xiaomi стоит:"/>
<TextBlock Text="{Binding Path=Price}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type IPhone}">
<TextBlock Text="Этот телефон IPhone стоит:"/>
<TextBlock Text="{Binding Path=Price}"/>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
Так я мог бы отобразить в окне коллекцию из телефонов, но как мне отобразить один телефон?
Допустим в коде у меня есть:
public Phone Telephone { get => _Telephone; set => _Telephone; }
private Phone _Telephone = new Xiaomi();
Есть ли какой-то элемент, чтобы я мог вывести это на форму? Использовать ItemsControl и создавать коллекцию для одного элемента выглядит очень костыльно.
Кто-то говорил, что для этого можно использовать
ContentControl
, но как именно не пояснили, а в интернете информации нет.