简化,我有一个包含DataTemplate和ViewModel-Class的ResourceDictionary。
<ResourceDictionary>
<DataTemplate DataType="Whatever">
<ListBox ItemsSource="{Binding Source={StaticResource MyViewModel}, Path=SomeGlobalData}" />
</DataTemplate>
<MyViewModelClass x:Key="MyViewModel" />
</ResourceDictionary>
当然Binding不起作用(它会触发异常)因为DataType没有资源'MyViewModel'。但是在VisualTree中,获取DataTemplated的“东西”是一个对象的子代,它将ResourceDictionary与其资源合并,因此可能有一种方法可以在运行时访问它。
所以我的问题是:在DataTemplate中访问'MyViewModel'有什么干净的方法吗?
答案 0 :(得分:0)
您的问题是这些资源的实例化顺序以及您使用StaticResource
vs DynamicResource
的事实。
通过查找对已定义资源的引用,StaticResource
为任何XAML属性属性提供值。尝试了解有关该主题的更多信息。
因此,如果您仍打算使用StaticResource
,请将视图模型移到数据模板上方。