2010-12-16 82 views
4

我使用MVVM作爲我的應用程序,控件的DataContext分配在我的c#代碼中(不在XAML中)。XAML DataContext和ViewModel類型

因此,XAML控件不知道其DataContext設置爲哪個實例類型。結果是,在XAML中,我的視圖模型的綁定屬性沒有重構支持和智能感知。

有沒有辦法告訴XAML中的控件與DataContext的鏈接類型?

因此,當我修改ViewModel中的屬性名稱或搜索該屬性的所有引用時,我希望XAML綁定中的該屬性也被考慮。

回答

3

沒有框架支持,你可以做的最好的事情就是告訴VS設計者DataContext的'形狀',這樣它會給你提示屬性。如果你想使你的解決方案的更多重構,防潮,我會建議丹尼爾的T4元數據的解決方案:

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

這generatesmetadata,而您可以在XAML引用您的視圖模型:

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

Colin E.

2

不,因爲DataContext可以在運行時更改,所以將它與特定類型綁定是沒有意義的。

+2

雖然這可能是真的,但我有很多情況下控件鏈接到一個特定的viewmodel類型 – thumbmunkeys 2010-12-16 15:14:22

相關問題