Я новичок в WPF и пытаюсь понять, как лучше расширить элемент управления ListBox
. В качестве учебного опыта я хотел создать ListBox
, чей ListBoxItem
отображать a CheckBox
вместо простого текста. Я получил это, работая в основном, используя ListBox.ItemTemplate
, явно устанавливая имена свойств, к которым я хотел привязать данные. Пример стоит тысячи слов, поэтому...
У меня есть настраиваемый объект для привязки данных:
public class MyDataItem {
public bool Checked { get; set; }
public string DisplayName { get; set; }
public MyDataItem(bool isChecked, string displayName) {
Checked = isChecked;
DisplayName = displayName;
}
}
(Я создаю список этих и устанавливаю ListBox.ItemsSource
в этот список.) И мой XAML выглядит так:
<ListBox Name="listBox1">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Checked}" Content="{Binding Path=DisplayName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Это работает. Но я хочу сделать этот шаблон многоразовым, т.е. Мне захочется привязать к другим объектам свойства, отличные от "Проверено" и "DisplayName". Как изменить шаблон, чтобы я мог сделать его ресурсом, повторно использовать его в нескольких экземплярах ListBox
и для каждого экземпляра привязать IsChecked
и Content
к произвольным именам свойств?