在合并的ResourceDictionary中找不到DataTemplate

时间:2015-04-09 22:27:49

标签: xaml datatemplate win-universal-app resourcedictionary

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

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

我在BOTH平台项目的“Assets”目录中创建了一个资源字典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"

有谁知道我遇到此错误的原因?我做错了什么?

奇怪的是:当我右键点击&gt; MyDataTemplate属性ListView.ItemTemplate上的“转到定义”,它将我引导到正确的位置。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

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

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