Festlegen von DataContext in DataGrid.RowStyle

8

Mit dem folgenden Beispiel kann R # (resharper) den Datacontext des Row-Stils nicht finden und warnt vor einer falschen Bindung (zur Laufzeit funktioniert das gut). Scheint so, als würde der Style den DataContext der ItemsSource nicht bekommen:

MainWindow.xaml:

%Vor%

MainWindowVM:

%Vor%

ArtikelVM:

%Vor%     
Ignacio Soler Garcia 21.11.2012, 11:49
quelle

1 Antwort

10

Sie haben Recht, ReSharper hat keine Kenntnis darüber, wie RowStyle in diesem speziellen Steuerelement verwendet wird (ist es Style für jedes Element von ItemsSource ? oder irgendeine Art von Header-Stil und Bindungen haben Zugriff auf ItemsSource Objekt selbst?), also hört es auf, Baum zu durchlaufen, der nach DataContext type auf Style Erklärung sucht.

Dieses Problem kann mit einer zusätzlichen Anmerkung zu Style declaration gelöst werden:

%Vor%

Projekt wird gut kompiliert, VS-Designer und R # funktionieren, aber VS xaml-Unterstützung erzeugt 1 Fehler im Fehlerfenster - "Eigenschaft 'DataContext' kann nicht an Elemente vom Typ 'Style' angehängt werden." Das ist ein bisschen nervig, aber funktioniert. Eine andere Möglichkeit besteht darin, den Eigenschaftstyp folgendermaßen zu quilifizieren:

%Vor%

Aber es produziert VS xaml Support-Fehler zu :) und etwas anderes Verhalten in Runtime - diese Bindung funktioniert nur mit Name Eigenschaft von ItemVM Typ und wird nicht funktionieren, wenn irgendwie VM-Objekt wird durch einige andere ersetzt Objekt eines anderen Typs mit der Eigenschaft Name zur Laufzeit (also wurde die Bindung "stark typisiert").

Wir suchen immer noch nach einem besseren Weg, um diese Art von Problemen in ReSharper 8.0 zu lösen und den VS-Designer glücklich zu machen, Entschuldigung für Verwirrung!

    
ControlFlow 21.11.2012, 12:22
quelle

Tags und Links