Have a databound WPF Listbox generate subclassed ListboxItems

对着背影说爱祢 提交于 2019-12-02 04:35:40

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!