【问题标题】:WPF DataTemplate access to Resources within same ResourceDictionaryWPF DataTemplate 访问同一 ResourceDictionary 中的资源
【发布时间】:2012-06-05 08:47:10
【问题描述】:

简单来说,我有一个 ResourceDictionary,其中包含一个 DataTemplate 和一个 ViewModel-Class。

<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”吗?

【问题讨论】:

    标签: wpf resources datatemplate


    【解决方案1】:

    您的问题是这些资源的实例化顺序以及您使用 StaticResourceDynamicResource 的事实。

    StaticResource 通过查找对已定义资源的引用来为任何 XAML 属性特性提供值。尝试了解有关该主题的更多信息。

    如果您仍打算使用StaticResource,请将您的视图模型移到数据模板上方。

    【讨论】:

    • 如果还有问题,请提供更多信息,但是如果你想看我的测试项目,请看:sdrv.ms/M8OfB9这是一个skydrive链接。
    最近更新 更多