我想在一个外部的dll中创建一个名为DataTemplate.xaml的资源文件,并在WP7页面中使用它。当我在页面的头部执行以下操作时,会出现错误:
<ResourceDictionary Source="pack://application:,,,/WP7SharedClassLibrary;component/DataTemplate.xaml" />
错误信息如下:"当前项目不支持“应用程序”作为打包URI的组件。"
是否有其他人遇到过这个问题并解决了?
我想在一个外部的dll中创建一个名为DataTemplate.xaml的资源文件,并在WP7页面中使用它。当我在页面的头部执行以下操作时,会出现错误:
<ResourceDictionary Source="pack://application:,,,/WP7SharedClassLibrary;component/DataTemplate.xaml" />
错误信息如下:"当前项目不支持“应用程序”作为打包URI的组件。"
是否有其他人遇到过这个问题并解决了?
我已经通过以下步骤成功地实现了这个:
向这个新的XAML文件添加了以下XAML代码:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="ForegroundBrush" Color="Red" />
</ResourceDictionary>
在WP7ExternalResourcesTest中,打开App.xaml并将部分更改为以下内容:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/WP7ExternalResourcesTestLibrary;component/External.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
TextBlock
中添加了 Foreground="{StaticResource ForegroundBrush}"
。TextBlock
正确显示为红色的“page name”单词。希望这可以帮助你。
我在尝试共享XAML ResourceDictionary文件时使用了pack语法,但收到了相同的错误信息。最终我使用了这个语法,并且它对我起作用了。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyDLLName;component/Folder/MyXAMLFile.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Silverlight不支持打包URI,这是WPF的功能。
如果您检查Silverlight中Image
对象的Source
属性的类型,它是Uri
。但在WPF中,源是具有ImageSource
类型的依赖属性。