WPF - ресурс, не загружаемый из Generic.xaml
Темы \Generic.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>
управления \Layout\Foo\FooItem.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...
, что заставляет меня думать, что что-то серьезно не так, и Generic.xaml не загружается должным образом. Я считаю это Generic.xaml, потому что, если я удалю вызов MergedDictionary и скопирую/вставлю стиль xaml непосредственно в Generic.xaml, он все равно не работает.
Ответы
Ответ 1
Я думаю, что вы изменили файл 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.:)
Ответ 2
копирование из моего блога: http://zoomicon.wordpress.com/2012/06/10/what-to-do-if-generic-xaml-doesnt-get-loaded-for-wpf-control/
в начале свойств \AssemblyInfo.cs вам нужно (обратите внимание, что это не используется/необходимо в Silverlight): используя System.Windows;
...
Имейте в виду, что если проект не показывает Свойства node в Обозревателе решений, вам нужно либо сделать новый проект с использованием правильного шаблона (для настраиваемого элемента управления WPF), либо щелкнуть правой кнопкой мыши проект, выберите "Свойства" , затем нажмите кнопку "Информация о сборке" и введите несколько фиктивных значений, затем нажмите "ОК", чтобы создать "Свойства" node (который также создается в подпапке "Свойства" и в файле AssemblyInfo.cs).
Вы можете развернуть (раскрывать) специальные свойства node в проводнике решений, затем открыть AssemblyInfo.cs и добавить вышеприведенный материал, если отсутствует