2010-12-16 4 views
4

J'utilise MVVM pour mon application, le DataContext de contrôles est assigné dans mon code C# (pas en XAML).XAML DataContext et ViewModel Type

Par conséquent, les contrôles XAML n'ont aucune idée du type d'instance sur lequel DataContext est défini. La conséquence est qu'il n'y a pas de support de refactoring et d'intellisense pour les propriétés liées de mon viewmodel en XAML.

Existe-t-il un moyen de dire à un contrôle en XAML à quel type son DataContext est lié? Par conséquent, lorsque je modifie un nom de propriété dans mon ViewModel ou que je recherche toutes les références de cette propriété, je souhaite que cette propriété soit également prise en compte dans les liaisons XAML.

Répondre

3

Il n'y a pas de support de structure, le mieux que vous pouvez faire est de dire au concepteur VS la 'forme' du DataContext afin qu'il vous donne des indications pour les propriétés. Si vous voulez faire de votre solution plus refactor-preuve, je recommande la solution de métadonnées T4 de Daniel:

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

Ce generatesmetadata pour vos modèles de vue que vous pouvez faire référence dans le XAML:

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

Colin E.

2

Non, comme le DataContext peut changer au moment de l'exécution, cela n'a aucun sens de lier ceci à un type particulier.

+2

Bien que cela puisse être vrai, j'ai beaucoup de cas où un contrôle est lié à un type de viewmodel particulier – thumbmunkeys

Questions connexes