问题
I would like to have my WPF Listbox, which is databound, generate subclassed ListboxItems instead of the regular ListboxItems. In this case, a DataTemplate is not sufficient because I need some custom properties for the subclassed ListBoxItems.
Is there a way to have the ListBox generated mySubClassedListBoxItem items for the bound data?
Thanks, Bart
回答1:
You need to create your own subclass of ListBox so you can override the method which creates the container, e.g.
public class MyListBox : ListBox
{
public MyListBox()
{
// Should get the default style & template since styles are not inherited
Style = FindResource(typeof(ListBox)) as Style;
}
protected override DependencyObject GetContainerForItemOverride()
{
var container = new MyListBoxItem();
return container;
}
}
public class MyListBoxItem : ListBoxItem
{
public MyListBoxItem()
{
Style = FindResource(typeof(ListBoxItem)) as Style;
// To easily see that these are custom ListBoxItems:
// TextElement.SetForeground(this, Brushes.Red);
}
// ...
}
来源:https://stackoverflow.com/questions/1581934/have-a-databound-wpf-listbox-generate-subclassed-listboxitems