我总是在xaml中创建新前缀时遇到问题。大多数情况下,我得到的消息是在程序集中找不到URI。我的设置:
我有一个带有MainWindow.xaml文件的WPF项目(在具有类libs和asp.NET项目的解决方案中)。 XAML以:Window x:Class =“MainWindow”......开头。 因此,默认情况下,没有赋予它的命名空间。在同一个项目中,我创建了一个文件夹“Folder”。在该文件夹中,我有resx文件。我需要做的是在xaml中创建一个前缀,这样我就可以解决这些文件。我在考虑:
xmlns:p="clr-namespace:WpfApplication.Folder"
然后是我的控件
<Label Content="{x:Static p:NameResxFile.KeyName></Label>
但是,前缀会生成“在程序集中找不到URI”错误。我只是没有制作前缀?
提前致谢。
修改
如果您无法将命名空间引用到文件夹,那么here会发生什么?
答案 0 :(得分:0)
xmlns
指定名称空间,它不会打扰文件夹或文件,如果您需要访问外部资源,可以通过ResourceDictionary
将其加载到控件的资源中。
我认为有这样的事情:
<Window.Resources>
<ResourceDictionary x:Key="ExternalRes" Source="Folder/File.xaml"/>
....
</Window.Resources>
答案 1 :(得分:0)
要引用资源字典的元素,您应该将该字典添加到控件的Resources
集合中,或者在App.xaml
文件中注册它。之后,您只需使用StaticResource扩展名即可访问该元素。您的代码将如下所示:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Folder/NameResxFile.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<!-- ... -->
<Label Content="{StaticResource KeyName}"/>
如果您想将资源字典放到另一个程序集并引用它,事情会变得棘手。为此,请参阅PackURIs in WPF文章。