我如何制作一个前缀,以便我可以在xaml中寻址一个文件夹

时间:2011-02-09 13:15:57

标签: wpf xaml prefix

我总是在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会发生什么?

2 个答案:

答案 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文章。