2009-08-27 1 views
1

Ich verwende das MVVM-Entwurfsmuster, und die DataContext meiner Ansicht wird auf ein ViewModel festgelegt.Wie an eine Eigenschaft des ViewModel aus einer GridView zu binden

In meiner Ansicht habe ich eine ListView/GridView mit ItemsSource gebunden an eine DataTable. Eine der GridViewColumns hat eine CellTemplate, die eine Button präsentiert. Ich möchte, dass die Eigenschaft IsEnabled der Schaltfläche an die Eigenschaft SelectButtonsEnabled meines ViewModel gebunden ist.

Die Verwendung von IsEnabled="{Binding Path=SelectButtonsEnabled}" funktioniert nicht, da meine DataTable keine Spalte namens "SelectButtonsEnabled" hat. Die Eigenschaft, an die ich zu binden versuche, ist global für das gesamte ViewModel, nicht spezifisch für eine Zeile der DataTable.

Ich denke, ich brauche eine Art von RelativeSource Tag, aber alle meine Versuche bisher fehlgeschlagen.

Danke.

Antwort

1

Nun, ich weiß nicht, ob dies die knappste Art und Weise ist, es zu tun, aber das funktioniert:

IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}, Path=DataContext.SelectButtonsEnabled}"