Работает ли XAML со ссылками на файлы в Visual Studio? - PullRequest
3 голосов
/ 20 апреля 2010

Я добавляю новый проект WPF в существующее решение Visual Studio и хотел бы повторно использовать набор кода (C # и xaml) из существующего проекта в решении.

Я создал новый проект и добавил существующие файлы следующим образом:

  • Щелкните правой кнопкой мыши проект
  • Добавить -> Добавить существующий элемент
  • Найдите файл для повторного использования, используйте стрелки рядом с «Добавить» и «Добавить как ссылку»

Теперь у меня есть хороший проект со всеми необходимыми ссылками. Однако XAML захлебывается этими ссылками. Например:

<ResourceDictionary.MergedDictionaries>
       <ResourceDictionary
           Source="Resources\Elements\Buttons\Buttons.xaml" />
       <ResourceDictionary
           Source="Resources\Elements\TextBox\TextBox.xaml" />
 </ResourceDictionary.MergedDictionaries>

Файлы "Buttons.xaml" и "TextBox.xaml" существуют как ссылки в моем новом проекте. Проект компилируется, но при запуске я получаю следующее исключение XamlParseException:

'Resources \ Elements \ Кнопки \ Buttons.xaml' значение не может быть присвоено свойству «Источник» объекта 'System.Windows.ResourceDictionary. Не удается найти ресурс 'Ресурсы / элементы / кнопки / buttons.xaml'.

Похоже, что парсер XAML требует наличия реальной копии этих файлов XAML в моем новом проекте, а не ссылок.

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

Любое понимание приветствуется!

1 Ответ

1 голос
/ 20 апреля 2010

Ссылка на внешний файл XAML, как вы заметили, не создает файл, в котором ссылка существует в структуре проекта.

Мой совет - использовать относительные ссылки в ссылках MergedDictionaries. Если XAML для повторного использования в другом проекте называется Common, свойство Source первого вложенного ResourceDictionary может быть:

.. \ Common \ Resources \ Elements \ TextBox \ TextBox.xaml

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...