2009-10-17 8 views
2

Je souhaite que ma zone de liste WPF, qui est databound, génère des ListboxItems sous-classifiés à la place des ListboxItems classiques. Dans ce cas, un DataTemplate n'est pas suffisant car j'ai besoin de certaines propriétés personnalisées pour ListBoxItems sous-classé.Avoir une base de données WPF Listbox générer des sous-classes ListboxItems

Existe-t-il un moyen pour que ListBox génère des éléments mySubClassedListBoxItem pour les données liées?

Merci, Bart

Répondre

3

Vous devez créer votre propre sous-classe de ListBox de sorte que vous pouvez remplacer la méthode qui crée le récipient, par exemple

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); 
    } 

    // ... 
}