我目前正在开发适用于Windows Phone 8.1和Windows 8.1的通用应用。 我分享了大部分代码,但我愿意保留样式资源。
一些上下文:首先,我现在只启动了WP8.1项目,所以一切都与这个平台有关。在这个WP8.1项目中,我有MainPage.xaml
,其中包含Pivot
控件。其中一个PivotItem
是UserControl
,为清晰起见,调用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
上的“转到定义”,它将我引导到正确的位置。
提前感谢您的帮助!
答案 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>