2010-12-16 13 views
4

Ich verwende MVVM für meine Anwendung, die DataContext der Steuerelemente ist in meinem C# -Code zugewiesen (nicht in XAML).XAML DataContext und ViewModel Typ

Daher haben die XAML-Steuerelemente keine Ahnung, auf welchen Instanztyp DataContext eingestellt ist. Die Konsequenz ist, dass es keine Refactoring-Unterstützung und Intellisense für die gebundenen Eigenschaften meines Viewmodels in XAML gibt.

Gibt es eine Möglichkeit, einem Steuerelement in XAML mitzuteilen, zu welchem ​​Typ DataContext gehört?

Wenn ich also einen Eigenschaftsnamen in meinem ViewModel ändere oder nach allen Referenzen dieser Eigenschaft suche, möchte ich, dass diese Eigenschaft in XAML-Bindungen ebenfalls berücksichtigt wird.

Antwort

3

Es gibt keine Framework-Unterstützung, das Beste, was Sie tun können, ist, dem VS-Designer die 'Form' des DataContext mitzuteilen, damit er Ihnen Hinweise zu den Eigenschaften gibt.

http://www.codeproject.com/KB/codegen/T4Metadata.aspx

Diese generatesmetadata für Ihre Ansicht Modelle, die Sie in der XAML verweisen können: Wenn Sie Ihre Lösung mehr refactor sicher machen wollen, würde ich Daniels T4 Metadaten Lösung empfehlen

<StackPanel DataContext="{Binding Source={StaticResource Person}}"> 
    <TextBlock >Name:</TextBlock> 
    <TextBox Text="{Binding Path={x:Static Metadata:PersonMetadata.NamePath}}"/> 
</StackPanel> 

Colin E.

2

Nein, da sich der DataContext zur Laufzeit ändern kann, ist es nicht sinnvoll, diesen an einen bestimmten Typ anzubinden.

+2

Während dies wahr sein kann, habe ich viele Fälle, in denen ein Steuerelement mit einem bestimmten Viewmodel-Typ verknüpft ist – thumbmunkeys

Verwandte Themen