Единственная возможность, которая имеет смысл, - это включить некоторые элементы управления в шаблон данных и использовать их.DataTemplate «наряжает» любой объект и может включать в себя полный контроль;на самом деле довольно часто проектируют пользовательские элементы управления и создают их с использованием DataTemplates;например, вы можете определить DataTemplate следующим образом:
<DataTemplate TargetType="{x:Type viewmodels:MyViewModel}">
<Button Command={Binding MyCommand} Content={Binding MyCaption} />
</DataTemplate>
Если опция MyViewModel содержит строковое свойство MyCaption и свойство ICommand MyCommand, DataTemplate будет автоматически использоваться, если он определен в области действиявизуально отобразить экземпляр класса MyViewModel, если:
- экземпляр установлен как свойство Content ContentControl или производного элемента управления, или
- экземпляр является одним из многих элементов вколлекция, отображаемая с помощью ItemsControl.
Когда я говорю «в области видимости», я на самом деле имею в виду, что DataTemplate определяется в ResourceDictionary где-то в доступной иерархии элементов управления;т.е. Application.Resources, Window.Resources и т. д. до уровня Grid.Resources, если в нем размещен целевой элемент управления (ContentControl или ItemsControl).
Конечно, вы также можете указать DataTemplate без TargetType, но вместо этого с ключом x: и использовать его, вручную ссылаясь на этот ключ;например myListBox.ItemTemplate={StaticResource myKey}
.