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 и добавьте вышеуказанный материал, если отсутствует