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% 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:
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!