为什么我在合并的资源字典中找不到DataTemplates?

时间:2010-05-09 19:32:31

标签: wpf datatemplate

在我的MainWindow.xaml中,我有以下对ResourceDictionary的引用:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MainSkin.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

在MainSkin.xaml中,我定义了一个datatemplate:

<DataTemplate x:Key="TagTemplate">
   ...
</DataTemplate>

在我的应用程序中,我尝试使用此数据模板:

<ContentControl DataContext="{Binding Tag}" ContentTemplate="{StaticResource TagTemplate}"/>

代码编译成功,但是当我尝试加载包含此StaticResource的Page或UserControl时,我得到一个异常,说无法找到TagTemplate。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

为了访问XAML文件中定义的资源的内容,您需要在每个页面中“包含”该XAML文件以及使用它的控件。因此,每个XAML文件都需要具有MainWindow.xaml中的MergedDictionaries条目。

或者,您可以将这些合并字典添加到App.xaml,并隐式包含这些资源:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MainSkin.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

答案 1 :(得分:0)

您是否在声明它的同一窗口中使用该StaticResource?否则我认为你无法访问它。