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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Sauriez vous comment je pourrais le forcer à le faire svp ?
Merci d'avance
@+
Partager