我有两个项目。一个是库,另一个是WPF应用程序。在我的库项目中,我创建了一个资源文件(Resources.resx),并在其中添加了一些字符串,并将其作为公共访问。
现在在我的WPF项目中,我添加了库项目的参考。现在我尝试在我的XAML控件中使用库资源文件。
这是我的代码。这里MyApplication是wpf项目,MyLibrary是dll项目。
<UserControl x:Class="MyApplication.LauncherView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:p="clr-namespace:MyLibrary"
<StackPanel>
<Button Content="{x:Static p:Resources.TextFromResource}" Command="{Binding LaunchCommand}" />
</StackPanel>
</UserControl>
但最后我收到了这些错误。
错误1命名空间“clr-namespace:MyLibrary”中不存在名称“Resources”。 错误2找不到“资源”类型。请注意,类型名称区分大小写。
答案 0 :(得分:2)
要使用该类而不是在程序集中,您需要定义程序集
xmlns:p="clr-namespace:MyNamespace;assembly=MyLibrary"
但是对于包含资源,你不需要包含命名空间,因为它不是一个类,并且没有命名空间......你需要包含资源文件..这是正确的方法
<ResourceDictionary Source="pack://application:,,,/MyLibrary;component/Subfolder/MyResourceFile.xaml"/>
之后你可以使用
Content="{x:StaticResource TextFromResourceKey}"
答案 1 :(得分:0)
您已使用合并字典。
<强>&LT; ResourceDictionary.MergedResources&GT; &LT; ResourceDictionary Source =“pack:// application:,,, / MyLibrary; component / component / Subfolder / MyResourceFile.xaml”/&gt; &LT; /ResourceDictionary.MergedResources> 强>
之后你可以使用它。