我正在尝试使用以下XAML代码将ViewModel设置为视图的DataContext:
<UserControl.DataContext>
<local:MyViewModel />
</UserControl.DataContext>
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MA_Resources/MA_ResourceDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
<local:MyViewModel x:Key="myViewModel" x:Name="myVM" />
</ResourceDictionary>
</UserControl.Resources>但是,我观察到视图模型构造函数被调用了两次。我知道视图模型在XAML中被实例化了两次,我应该从参考资料中将DataContext设置为StaticResource。但是,我不知道如何使用StaticResource设置DataContext。我尝试了以下方法,但它给出了一个例外:
<UserControl .... DataContext="{StaticResource myViewModel}" >请帮我弄清楚什么是分配DataContext的合适的XAML代码。
发布于 2012-11-12 02:20:20
如果稍后在xaml文件中定义了静态资源,则无法引用该资源。因此,您可以执行以下操作:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MA_Resources/MA_ResourceDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
<local:MyViewModel x:Key="myViewModel" x:Name="myVM" />
</ResourceDictionary>
</UserControl.Resources>
<UserControl.DataContext>
<StaticResourceExtension ResourceKey="myViewModel"/>
</UserControl.DataContext>我想知道为什么您要将ViewModel定义为静态资源。就我个人而言,我更喜欢在DataContext的设置器中实例化。
https://stackoverflow.com/questions/13333922
复制相似问题