Как я могу сделать префикс, чтобы я мог обратиться к папке в xaml - PullRequest
0 голосов
/ 09 февраля 2011

У меня всегда возникают проблемы при создании новых префиксов в xaml. Большую часть времени я получаю сообщение, что URI не может быть найден в сборке. Моя настройка:

У меня есть проект WPF (в решении с проектами классов libs и asp.NET) с файлом MainWindow.xaml. XAML начинается с: Window x: Class = "MainWindow" .... Так что по умолчанию ему не присваивается пространство имен. В этом же проекте я создал папку «Папка». В этой папке у меня есть resx-файлы. Что мне нужно сделать, это сделать префикс в xaml, чтобы я мог обратиться к этим файлам. Я думал о:

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

и затем для моего контроля

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

Однако префикс создает ошибку «URI не найден в сборке». Я просто не могу делать префиксы?

Заранее спасибо.

EDIT

Если вы не можете сделать ссылку на пространство имен в папке, что происходит здесь ?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2011

Чтобы сослаться на элемент словаря ресурсов, вы должны добавить этот словарь в коллекцию Resources вашего элемента управления или зарегистрировать его в файле App.xaml.После этого вы можете просто использовать расширение StaticResource , чтобы получить доступ к элементу.Ваш код будет выглядеть так:

  <UserControl.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
         <ResourceDictionary Source="/Folder/NameResxFile.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </UserControl.Resources>
  <!-- ... -->
  <Label Content="{StaticResource KeyName}"/>

Все становится сложнее, если вы хотите поместить словарь ресурсов в другую сборку и сослаться на него.Для этого обратитесь к PackURIs в статье WPF .

0 голосов
/ 09 февраля 2011

xmlns определяет пространства имен, он не беспокоится о папках или файлах, если вам нужен доступ к внешнему ресурсу, вы можете загрузить его в ресурсы вашего элемента управления с помощью ResourceDictionary.

Произошло нечто подобноея думаю:

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