HJST1979 Geschrieben 17. Mai 2012 Geschrieben 17. Mai 2012 Hallo ich hoffe es kann mir einer helfen, ich komme einfach nicht auf die Lösung, und bei Google gebe ich wohl immer das falsche ein Ich habe ein DataGrid das mit x Datensätzen gefüllt wird, darauf befindet sich ein Contextmenü mit 3 Einträgen "Neu", "Bearbeiten" und "Löschen". Wenn ich ein ContextMenuItem anklicke wird die jeweilige Aktion ausgeführt. Bis hier hin bekomme ich alles selber hin. Ich möchte nun per XAML die "IsEnabled"- Eigenschaft des ContextMenuItem abhängig davon machen ob ein Zeile des DataGrid`s ausgewählt wurde oder nicht. Soll heißen, wenn eine Zeile gewählt, dann soll "Bearbeiten" und "Löschen" aktiv sein, wenn keine Zeile gewählt dann nicht. Gruß Hans-Jörg Zitieren
steinadler Geschrieben 18. Mai 2012 Geschrieben 18. Mai 2012 Hallo, ich habe das einmal so gelöst: 1. Kontextmenüentrag 'Command'-Eigenschaft auf ein Command in der Codebehind-Datei gesetzt (dies muss dann ICommand implementieren, dazu gibts aber viele Dinge in verschiedenen Foren) 2. SelectedItem des Datagrid an eine Variable in der ViewModel-Klasse gebunden 3. das Command unter 1. besitzt eine Eigenschaft CanExecuted oder so ähnlich. Diese musst du implementieren und true zurückgeben, wenn die SelectedItem-Variable unter 2. nicht null ist Bei mir war es allerdings so, dass, außer am Anfang, IMMER eine Zeile ausgewählt war. Dazu gibts sicher eine Eigenschaft, die ich aber nicht gefunden habe. Mir kommts so vor, als ob wir mit diesem WPF wieder in Richtung MFC gehen. Zitieren
HJST1979 Geschrieben 18. Mai 2012 Autor Geschrieben 18. Mai 2012 Hallo ich habe auch eher darauf gehofft, das man das Komplett in XAML abbilden kann. Denn wenn ichs ähnlich mache wie du, kann ich mir sogar die Command-Eigenschaft sparen. Ich könne ja auf das Ereignis MouseRightButtonDown reagieren, dort überprüfen, ob eine Zeile ausgewählt wurde und dann im ModelView die Variable setzen. Aber so richtig WPF- Style ist das auch nicht Gruß Hans-Jörg Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.