J'essaie de travailler avec une grille de données en utilisant le modèle MVVM. Le problème est que chaque fois que je modifie la propriété VM qui est liée à SelectedItem à null, la vue ne désélectionne pas l'élément actuellement sélectionné. Ceci est mon obligatoire dans tous XAML:WPF Datagrid selecteditem = null dans MVVM
<DataGrid Grid.Column="0" Grid.Row="0"
ItemsSource="{Binding Path=Users}"
AutoGenerateColumns="False"
CanUserAddRows="False"
IsReadOnly="True"
SelectedItem="{Binding Path=SelectedUser, Mode=TwoWay}">
Les travaux de liaison SelectedItem de la vue à la machine virtuelle ainsi dans la propriété SelectedUser je l'ai toujours l'objet sélectionné. Le problème est que dans la machine virtuelle, je fais des choses qui modifient parfois la propriété SelectedUser à zéro, donc je m'attendrais à ce que la grille de données désélectionne également la ligne. Au lieu de cela, il reste sélectionné et si j'essaie de cliquer sur la même ligne, la propriété ne se met pas à jour. Si je clique sur une autre ligne, la propriété change comme prévu.
Existe-t-il un moyen de désélectionner le DataGrid si sa propriété binded est définie sur null? Aussi, je suis à la recherche d'une solution MVVM car je ne veux pas écrire de code derrière. Je peux résoudre ce problème en écrivant le code derrière alors ne perdez pas de temps offrir de telles solutions :)
l.e .: c'est ma propriété dans la machine virtuelle:
public RPLUser SelectedUser
{
get
{
return selectedUser;
}
set
{
selectedUser = value;
OnPropertyChanged("SelectedUser");
}
}
Merci à l'avance!
Lorsque vous définissez la propriété dans votre modèle, appelez-vous l'événement OnPropertyChanged pour indiquer à la vue qu'elle doit être mise à jour? – Purplegoldfish
Oui, je suis en train de modifier la description pour le mentionner également. Bonne question, merci! –
Pouvez-vous publier le code que vous utilisez pour définir la propriété dans votre machine virtuelle et également le code de la propriété elle-même? – Purplegoldfish