2010-12-16 52 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