【问题标题】:How can i make a prefix so i can address a folder in xaml如何制作前缀,以便我可以在 xaml 中寻址文件夹
【发布时间】:2011-02-09 21:28:43
【问题描述】:

我在 xaml 中创建新前缀时总是遇到问题。大多数时候,我收到在程序集中找不到 URI 的消息。我的设置:

我有一个带有 MainWindow.xaml 文件的 WPF 项目(在具有类库和 asp.NET 项目的解决方案中)。 XAML 以 Window x:Class="MainWindow" ... 开头。 所以默认情况下,它没有命名空间。在同一个项目中,我创建了一个文件夹“文件夹”。在那个文件夹中,我有 resx 文件。我需要做的是在 xaml 中添加一个前缀,这样我就可以处理这些文件。我在想:

xmlns:p="clr-namespace:WpfApplication.Folder"

然后是我的控件

<Label Content="{x:Static p:NameResxFile.KeyName></Label>

但是,前缀会生成“在程序集中找不到 URI”错误。我只是在制作前缀方面失败了?

提前致谢。

编辑

如果您无法将命名空间引用到文件夹,here 会发生什么?

【问题讨论】:

    标签: wpf xaml prefix


    【解决方案1】:

    xmlns 指定命名空间,它不会打扰文件夹或文件,如果您需要访问外部资源,您可以通过ResourceDictionary 将其加载到控件的资源中。

    我认为是这样的:

    <Window.Resources>
        <ResourceDictionary x:Key="ExternalRes" Source="Folder/File.xaml"/>
        ....
    </Window.Resources>
    

    【讨论】:

      【解决方案2】:

      要引用资源字典的元素,您应该将该字典添加到控件的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 文章。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 2012-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-05
        相关资源
        最近更新 更多