Вы действительно собираетесь создавать наследование в моделях представления, а не в представлениях. Я бы определил класс ItemViewModelBase
, который выставляет свойства ItemName
, Items
и SelectedItemName
и извлекал бы из него мои модели представлений.
Сами по себе взгляды на самом деле не "наследуют". На самом деле, если вам не нужна настройка в представлении, вам не нужно несколько представлений: вам нужен только один вид, представляющий ItemViewModelBase
объекты.
Конечно, если вам нужно, чтобы представления были другими, вы можете выполнить определенную настройку, например ::
<DataTemplate DataType="{x:Type CarsViewModel}">
<DockPanel>
<Label DockPanel.Dock="Top">Cars</Label>
<local:ItemView/>
</DockPanel>
</DataTemplate>
Это классная идея по другой причине. Прямо сейчас, если вы не предоставите шаблон данных, всякий раз, когда WPF представляет объект, он создает TextBlock
, содержащий object.ToString()
. Реализация базового базового класса дает вам возможность глобально переопределить это поведение, просто создав один шаблон данных, например ::
<DataTemplate DataType="{x:Type ItemViewModelBase}">
<TextBlock Text="{Binding ItemName}"/>
</DataTemplate>
Это не проще, чем просто переопределить ToString()
, чтобы вернуть ItemName
(это то, с чего я бы начал), но если (например) вы хотите ToolTip
, который отображает подробную информацию, когда пользователь наводит на нее курсор, Вы просто добавляете его в этот шаблон, и он работает везде в вашем пользовательском интерфейсе.