【问题标题】:DataTemplate not found in merged ResourceDictionary在合并的 ResourceDictionary 中找不到 DataTemplate
【发布时间】:2023-08-28 04:27:02
【问题描述】:

我目前正在为 Windows Phone 8.1 和 Windows 8.1 开发通用应用程序。 我分享了我的大部分代码,但我愿意保持样式资源分开。

一些背景:首先,现在我只启动了 WP8.1 项目,所以一切都与这个平台有关。在这个 WP8.1 项目中,我有一个 MainPage.xaml,其中包含一个 Pivot 控件。其中一个PivotItemUserControl,为了清楚起见,称为MyUserControl

我在两个平台项目中的“资产”目录中创建了一个资源字典 Styles.xaml。然后,我将这 2 个新文件注册到我的共享 App.xaml 中,如下所示:

<Application.Resources>
    <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
    <ResourceDictionary x:Key="ResourceDictionary">
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Assets/Styles.xaml"></ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

在WP8.1项目Styles.xaml文件中,我创建了一个DataTemplate

<DataTemplate x:Key="MyDataTemplate">
    <TextBlock Text="This is a textblock" />
</DataTemplate>

MyUserControl 中,我添加了一个ListView 并将其绑定到ItemTemplate 属性到MyDataTemplate,如下所示:

<ListView ItemTemplate="{StaticResource MyDataTemplate}" ItemsSource="{Binding MyContent}" />

当我运行解决方案并最终出现此错误时:

Cannot find a Resource with the Name/Key "MyDataTemplate"

有谁知道我为什么会遇到这个错误?我做错了什么?

奇怪的事情:当我在ListView.ItemTemplate 属性中绑定的MyDataTemplate 上右键单击>“转到定义”时,它会将我引导到正确的位置。

提前感谢您的帮助!

【问题讨论】:

    标签: xaml datatemplate win-universal-app resourcedictionary


    【解决方案1】:

    你的代码错了,这里是正确的

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Assets/Styles.xaml"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
            <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
        </ResourceDictionary>
    </Application.Resources>
    

    【讨论】:

      最近更新 更多