Skip to content

Button Binding in een Grid

Dolflot edited this page Nov 28, 2019 · 2 revisions

Hieronder ga ik laten zien hoe je een button command kunt binden aan een object van een bepaalde row in een grid. Dit kan erg handig zijn want hierdoor heb je bijvoorbeeld geen SelectedItem meer nodig om bepaalde commando's uit te voeren.

Xaml

Ten eerste moet je in de xaml file een kleine aanpassing maken. Origineel ziet de Binding er zo uit:

<Button Command="{Binding DataContext.OpenEditEvent, RelativeSource={RelativeSource AncestorType=DataGrid}}">

Maar om hem te binden aan het object van die row moet je nog CommandParameter="{Binding}" toevoegen zodat je dit krijgt:

<Button Command="{Binding DataContext.OpenEditEvent, RelativeSource={RelativeSource AncestorType=DataGrid}}" CommandParameter="{Binding}">

ViewModel

RelayCommand

In het viewmodel moet je daarna de relaycommands aanpassen. Origineel zullen deze er zo ongeveer uit zien:

OpenEditEvent = new RelayCommand(OpenEditEventPage, CanOpenEdit);

Maar omdat de relaycommand nu een object mee krijgt via de CommandParameter in de xaml moet er hier een object gespecificeerd worden. In dit geval krijgt de RelayCommand een EventVM mee dus dan krijg je dit:

OpenEditEvent = new RelayCommand<EventVM>(OpenEditEventPage, CanOpenEdit);

Methodes

Daarna moet je nog de methodes aanpassen die in de relaycommand aangeroepen worden. Hier is het origineel:

private void OpenEditEventPage() { }

Deze methode krijgt nu een parameter mee die overeen komt met het object dat gespecificeerd is in de Relaycommand. Dus:

private void OpenEditEventPage(EventVM source) { }

Clone this wiki locally