Je suis un nouveau venu chez XAML, et ma première tâche dans un nouveau travail est de démêler une collection particulièrement malodorante de code spaghetti. Apprendre le XAML en même temps que de démêler ce spectacle d'horreur me dépasse un peu, alors je m'excuse pour les questions que je pose au sujet des devoirs, ces jours-ci.Pourquoi ce code ne lie pas SelectedItem à une propriété?
Quoi qu'il en soit, j'ai le code XAML suivant:
<UserControl.Resources>
<CollectionViewSource x:Key="XMLObjectGroups" Source="{Binding Path=XMLObjectList}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="IsDateType"/>
</CollectionViewSource.GroupDescriptions>
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="IsDateType" Direction="Ascending"/>
<scm:SortDescription PropertyName="OrderNumber" Direction="Ascending"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
<UserControl.Resources>
...
<ListView
DataContext="{StaticResource XMLObjectGroups}"
ItemContainerStyle="{StaticResource XMLItemStyle}"
ItemsSource="{Binding}"
SelectedItem="{Binding Path=SelectedOrder}">
Sur la deuxième ligne XMLObjectList
est une propriété en lecture seule d'une classe ViewModel, un retour Collections.ObjectModel.ReadOnlyObservableCollection(Of MyOrder)
.
Sur la dernière ligne SelectedOrder
est une propriété de la même classe ViewModel, qui permet de définir et d'obtenir un objet MyOrder.
J'ai confirmé que XMLObjectList
est référencé correctement en renommant la propriété, en tapant la chaîne, les points d'arrêt, etc. XMLObjectList
fait certainement référence à la propriété XMLObjectList
de cette classe ViewModel particulière. Toutefois, la propriété SelectedOrder
n'est jamais accessible au moment de l'exécution, ce qui signifie qu'elle n'est pas connectée correctement à SelectedItem de cette ListView. En ce qui concerne ma lecture du sujet, et en ce qui concerne les réponses à une question similaire hier, le code que j'ai devrait fonctionner, mais ce n'est pas le cas. Qu'est-ce que je fais de mal, ici?
brillant. Ça a marché! Pourriez-vous expliquer ce qui a fait la différence? – Frosty840
Dans votre code d'origine, vous définissez le DataContext explicitement! Ensuite, lorsque vous liez l'élément SelectedItem, il essaie de se lier à la propriété SelectedOrder sur XMLObjectList (qui n'existe pas) – rudigrobler