Question

J'ai une boîte de dialogue qui permet à l'utilisateur de choisir une icône personnalisée. icônes chargées sont affichées dans une liste déroulante dans laquelle l'utilisateur effectue la sélection. Voici le code XAML pour la zone de liste déroulante:

<ComboBox 
    Style="{DynamicResource IconComboBox}"
    ItemTemplate="{StaticResource IconTemplate}"
    ItemsSource="{Binding Icons,
        RelativeSource={RelativeSource FindAncestor, 
            AncestorType={x:Type UserControl}}}"
    SelectedItem="{Binding Icon}"
    />
  • Icônes est une propriété qui retourne un tableau de BitmapFrame .
  • Icône est une propriété pour le moment sélectionné.

Quels sont les travaux actuellement ne marche pas est que lorsque je dans le code qui se trouve derrière la propriété de l'icône (par exemple, lors de l'affichage quelle icône l'utilisateur a choisi la dernière fois que la boîte de dialogue a été montré), la sélection COMBOBOX est juste vide. Comme si je l'avais mis la propriété sur null avant d'appeler OnPropertyChanged.

Ma théorie actuelle est que WPF ne peut pas comparer BitmapFrames, donc lors de la marche dans la liste, il ne parvient pas à déterminer l'une des icônes là, le « égal » et prend ainsi nulle.

En bref; ce qui est la meilleure façon de par le code cache derrière l'élément sélectionné, qui est un BitmapFrame, dans un combobox?

Était-ce utile?

La solution

Vous pouvez utiliser SelectedItem ou SelectedIndex dans le code sous-jacent pour définir l'élément sélectionné!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top