WPF-ресурс не загружается из Generic.код XAML
ТемыУниверсальный.язык XAML:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="WPF Commons;component/Controls/Layout/Foo/FooItem.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Элементы УправленияLayoutFooFooItem.язык XAML:
<Style TargetType="{x:Type l:FooItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type l:FooItem}">
<Border>
<ContentPresenter ContentSource="Header" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
если я скопирую весь стиль в мои ресурсы usercontrol, он работает нормально. Но, если я этого не делаю, usercontrol отображается пустым. В Expression Blend 4 я щелкнул правой кнопкой мыши и выбрал Edit Template
>, но это не позволит мне выбрать Edit a Copy...
что приводит меня к мысли, что что-то сильно неправильно и родовое.код XAML не загружается должным образом. Я думаю, это общее.xaml, потому что если я удаляю вызов MergedDictionary и копирую/вставляю стиль xaml непосредственно в Generic.xaml по-прежнему не работает.
2 ответов
Я собираюсь сделать дикое предположение, что вы изменили свой AssemblyInfo.cs-файл и либо изменил (либо удалил) следующую строку:
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
вам нужно рассказать вашей ассамблее о вашем ThemeInfo. :)
копирование из моего блога: http://zoomicon.wordpress.com/2012/06/10/what-to-do-if-generic-xaml-doesnt-get-loaded-for-wpf-control/
в начале свойства\AssemblyInfo.cs вам нужно (обратите внимание, что это не используется/требуется в Silverlight): использование системы.Окна;
...
имейте в виду, что если проект не показывает узел свойств в обозревателе решений, вам нужно либо создать новый проект, используя правильный шаблон (для пользовательский элемент управления WPF) или щелкните правой кнопкой мыши проект, выберите Свойства, Затем нажмите кнопку Сведения о сборке и введите некоторые фиктивные значения, затем OK, чтобы создать узел свойства (который также создает вложенную папку свойств и AssemblyInfo.cs file).
вы можете развернуть (раскрывающийся список) узел специальных свойств в обозревателе решений, чтобы открыть AssemblyInfo.cs и добавьте вышеуказанный материал, если отсутствует