DataGrid ComboBox: keyboard-focused item uses an undefined brush key (MaterialDesign.Brush.TextBox.ComboBoxHover)

Ouverte Adaptée aux débutants
#4,124 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
1/5
Temps estimé
Moins d'une heure
Accessibilité débutants
88/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
csharp
Domaine
desktop-dev

Piste de recherche

Le problème se situe dans src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.DataGrid.ComboBox.xaml vers la ligne 60, dans le MultiTrigger de focus clavier du modèle de conteneur d'élément. Compare la clé utilisée à cet endroit avec celle du trigger de survol de la souris à la ligne 53, et vérifie qu'elle est définie dans MaterialDesignTheme.Light.xaml et Dark.xaml. C'est terminé lorsque l'élément ayant le focus est mis en surbrillance lors de la navigation avec les touches fléchées, ce que tu peux confirmer en lançant l'exemple DataGrid ComboBox de l'application de démonstration.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Bug explanation

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.DataGrid.ComboBox.xaml, line 60, in the item container template of the DataGrid ComboBox:

<MultiTrigger>
  <MultiTrigger.Conditions>
    <Condition Property="IsSelected" Value="False" />
    <Condition Property="IsKeyboardFocused" Value="True" />
  </MultiTrigger.Conditions>
  <Setter TargetName="Bd" Property="Background" Value="{DynamicResource MaterialDesign.Brush.TextBox.ComboBoxHover}" />
</MultiTrigger>

No resource with the key MaterialDesign.Brush.TextBox.ComboBoxHover is defined anywhere in the repository (GitHub code search finds only this line). The trigger right above it — the mouse-over case, line 53 — uses MaterialDesign.Brush.DataGrid.ComboBoxHover, which is defined in both MaterialDesignTheme.Light.xaml and MaterialDesignTheme.Dark.xaml (line 39), and lines 171 and 297 use the same key. So this looks like the keyboard-focus trigger was meant to use it too.

Since it is a DynamicResource, nothing throws: the background just doesn't change when an item gets keyboard focus, so someone moving through the dropdown with the arrow keys gets no highlight on the focused item. I found this by reading the source and haven't run it, so apologies if I'm missing something.

Suggested change (line 60):

<Setter TargetName="Bd" Property="Background" Value="{DynamicResource MaterialDesign.Brush.DataGrid.ComboBoxHover}" />

The line is the same in 5.4.0 and on master at 0877280.

Found with XamlKeys, a static checker for XAML resource keys I'm working on.

Version

5.4.0

Langage dominant
C#
Étoiles
16.3k
Forks
3.5k
Merge moyen
4 h 25 min
PR mergées (30 j)
4

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de MaterialDesignInXAML/MaterialDesignInXamlToolkit

Toutes les issues de MaterialDesignInXAML/MaterialDesignInXamlToolkit

Issues similaires

Plus d'issues C#

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.