2010-12-16 14 views
4

アプリケーション用にMVVMを使用していますが、コントロールのDataContextはC#コード(XAMLではありません)に割り当てられています。XAML DataContextとViewModelタイプ

したがって、XAMLコントロールでは、DataContextに設定されているインスタンスの種類がわかりません。その結果、XAMLのビューモデルのバインドされたプロパティに対するリファクタリングサポートとインテリセンスはありません。

XAMLのコントロールに、DataContextの種類がリンクされていることを伝える方法はありますか?

ViewModelでプロパティ名を変更したり、そのプロパティのすべての参照を検索すると、XAMLバインディングのこのプロパティも考慮されます。

答えて

3

フレームワークのサポートはありません。できることは、VSデザイナーにDataContextの「シェイプ」を伝え、プロパティのヒントを与えることです。あなたはあなたのソリューションよりリファクタリングプルーフを作りたい場合は、私はダニエルのT4のメタデータ・ソリューションをお勧めします:あなたはXAMLで参照することができ、あなたのビューモデルの

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

このgeneratesmetadata:

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

Colin E.

2

いいえ、DataContextは実行時に変更できるため、これを特定の型に関連付けることは意味がありません。

+2

これは真実かもしれませんが、私はコントロールが1つの特定のビューモデルタイプにリンクされているケースがたくさんあります – thumbmunkeys

関連する問題