Listbox et templateselector, ca fonctionne mais pas de refresh
Bonjour à tous,
Je viens d'implémenter un fonctionnement sur un listbox permettant d'utiliser plusieurs templates différents qui seront choisis selon un critere de l'objet bindé en tant qu'item.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
Public Class MultiTemplateListBox
Inherits ListBox
Public Shared ReadOnly TemplateSelectorProperty As DependencyProperty = _
DependencyProperty.Register("TemplateSelector", GetType(LstDataTemplateSelector), GetType(MultiTemplateListBox), New PropertyMetadata(New PropertyChangedCallback(AddressOf OnTemplateChanged)))
Public Property TemplateSelector() As LstDataTemplateSelector
Get
Return Me.GetValue(TemplateSelectorProperty)
End Get
Set(ByVal value As LstDataTemplateSelector)
Me.SetValue(TemplateSelectorProperty, value)
End Set
End Property
Protected Overrides Sub PrepareContainerForItemOverride(ByVal element As System.Windows.DependencyObject, ByVal item As Object)
MyBase.PrepareContainerForItemOverride(element, item)
Dim listBoxItem As ListBoxItem = element
If listBoxItem IsNot Nothing Then
listBoxItem.ContentTemplate = Me.TemplateSelector.SelectTemplate(item, Me)
End If
End Sub
Private Shared Sub OnTemplateChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
End Sub
End Class
Public Class LstDataTemplateSelector
Public Overridable Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject)
Return Nothing
End Function
End Class |
Cela fonctionne très bien mais lorsque je modifie la valeur de l'élément bindé, le listbox ne retourne pas dans le templateselector pour changer de template.
Sauriez vous comment je pourrais le forcer à le faire svp ?
Merci d'avance
@+