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

发布于 2024-09-01 01:34:11 字数 761 浏览 3 评论 0原文

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

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

在 MainSkin.xaml 中,我定义了一个数据模板:

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

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

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

代码编译成功,但是当我尝试加载包含此 StaticResource 的页面或 UserControl,出现异常,提示无法找到 TagTemplate。

我做错了什么?

In my MainWindow.xaml, I have the following reference to a ResourceDictionary:

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

In MainSkin.xaml, I define a datatemplate:

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

Deeper within my application, I attempt to use this data template:

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

The code compiles successfully, but when I attempt to load a Page or UserControl that contains this StaticResource, I get an exception saying that the TagTemplate can't be found.

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无畏 2024-09-08 01:34:11

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

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

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

In order to access the contents of a resource defined in a XAML file, you need to "include" that XAML file in each page and control that uses it. So every XAML files will need to have the MergedDictionaries entry that you have in MainWindow.xaml.

Alternatively you can add those merge dictionaries to App.xaml and those resources are included implicitly:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MainSkin.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
凑诗 2024-09-08 01:34:11

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

Are you using that StaticResource in the same Window where it is declared? Otherwise I think that you cannot have access to that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文