Я создаю общую сборку WP7, которая будет отображать общую справку/информацию о моих приложениях, каждая сборка приложения будет указывать пару панелей StackPanel, которые содержат некоторую информацию, специфичную для приложения (назовем их Legal.xaml и WhatsNew.xaml).
В идеале эти специфичные для приложения XAML-файлы должны быть в текстовой форме (а не в том, что создается в коде), чтобы их можно было загружать через HTTP или в виде встроенной строки ресурса.
Загрузка XAML работает нормально, пока я не попытаюсь разбить некоторые определения стилей в другой файл, затем XamlReader.Load() завершается с ошибкой с примечанием: «Значение атрибута AboutPageDocs/CommonStyles.xaml выходит за пределы допустимого диапазона. [Строка: 43 Позиция: 45]”
Эта ошибка может произойти при загрузке Legal.xaml, который, когда мы смотрим вокруг, как 43, мы находим, где я пытаюсь загрузить ResourceDictionary, который теперь содержит пользовательские стили:
<StackPanel.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="AboutPageDocs/CommonStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</StackPanel.Resources>
Вот ошибка... если просто скопировать и вставить код StackPanel (который загружается динамически во время выполнения) и поместить его в UserControl... все работает нормально.
Если не считать необходимости определять мои стили, встроенные как в Legal.xaml, так и в WhatsNew.xaml... есть ли способ получить свойство XamlReader.Load() для поиска CommonStyles.xaml?
Подумав, что исходный путь неверен, я попытался разместить копии CommonStyles.xaml в разных местах через обе сборки... а также поэкспериментировал с синтаксисом pack://uri... пока все безрезультатно .
Что мне не хватает?
XamlReader.Load
в первую очередь? Если вам нужен повторно используемый элемент управления без XAML, вы должны жестко написать документ на C#. - person Claus Jørgensen   schedule 06.12.2011