WPF - ресурс не загружается из Generic.xaml - PullRequest
16 голосов
/ 12 апреля 2011

Темы \ 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, он будет работать нормально. Но, если я этого не сделаю, пользовательский контроль появляется пустой. В Expression Blend 4 я щелкнул правой кнопкой мыши и выбрал Edit Template>, но он не позволит мне выбрать Edit a Copy..., что наводит меня на мысль, что что-то не так, и Generic.xaml загружается неправильно. Я полагаю, что это Generic.xaml, потому что, если я удаляю вызов MergedDictionary и копирую / вставляю стиль xaml непосредственно в Generic.xaml, он все равно не работает.

Ответы [ 2 ]

31 голосов
/ 12 апреля 2011

Я предположу, что вы изменили свой файл 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.:)

1 голос
/ 10 июня 2012

копирование из моего блога: http://zoomicon.wordpress.com/2012/06/10/what-to-do-if-generic-xaml-doesnt-get-loaded-for-wpf-control/

в начале нужного файла Properties \ AssemblyInfo.cs (обратите внимание, это не используется / не требуется в Silverlight): использование System.Windows;

...

Имейте в виду, что если проект не показывает узел свойств в обозревателе решений, необходимо либо создать новый проект, используя правильный шаблон (для пользовательского элемента управления WPF)или щелкните проект правой кнопкой мыши, выберите «Свойства», затем нажмите кнопку «Информация о сборке» и введите несколько фиктивных значений, затем нажмите «ОК», чтобы создать узел «Свойства» (который также создает подпапку «Свойства» и файл AssemblyInfo.cs).

Вы можете развернуть (раскрыть) специальный узел Свойства в обозревателе решений, а затем открыть AssemblyInfo.cs и добавить вышеуказанные элементы, если они отсутствуют

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...