Подтвердить что ты не робот

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, он все равно не работает.

4b9b3361

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