Проблема глобальных стилей WPF с.Net4

Я только что изменил свое приложение WPF от.Net3.5 до.Net4. Выполнение этого заставило все мои глобальные стили прекращать работать. Только стили явно набор с помощью ключа действительно работали. Я провел некоторое исследование и выяснил то, что вызывает это и воспроизвело его в простом приложении.

У меня есть простое приложение WPF, содержащее только кнопку с текстом - никакой стиль или что-либо еще. Я определяю стиль для всех кнопок в ResourceDictionary Приложения. Xaml:

<Style TargetType="{x:Type Button}">
    <Setter Property="Background" Value="Red"></Setter>
</Style>

Моя кнопка является теперь Красной - весь штраф. Я теперь перемещаю это в отдельный ResourceDictionary в отдельном проекте. Это - то, где я хочу держать все свои общие стили. Кнопка является все еще красной, и моя ссылка от App.xaml до SharedStyles.xaml похожа на это:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>              
           <ResourceDictionary Source="/StyleLib;component/SharedStyles.xaml"/> 
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Теперь - я хочу, чтобы SharedStyles.xaml StyleLib содержал все определенные определения стилей, таким образом, я создаю новый файл в том же проекте по имени ButtonStyles.xaml, и я добавляю ресурс там. На самом деле - я добавляю другой стиль также с ключом, который будет использоваться явно (технически, я добавил это позже, таким образом, это не имеет никакого отношения к проблеме, которая происходит).

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Red"></Setter>
    </Style>

    <Style x:Key="Explicit" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Blue"></Setter>
    </Style>    
</ResourceDictionary>

На ButtonStyles.xaml ссылаются от SharedStyles.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/StyleLib;component/ButtonStyles.xaml"/>
    </ResourceDictionary.MergedDictionaries>   
</ResourceDictionary>

Теперь - мое кнопочное управление больше не разрабатывается. На самом деле - все еще показано, как разработано в окне предварительного просмотра в VS2010, но когда я запускаю приложение, они не разрабатываются. Если я явно ссылаюсь на стиль с ключом, "Явным", они получают этот стиль - таким образом, файл успешно включен.

Другая забавная вещь состоит в том, что, если я теперь добавляю другой стиль в SharedStyle.xaml - например, глобальный стиль для StackPanel (который был тем, что я попробовал) - затем глобальный стиль в ButtonStyle.xaml волшебно начинает работать..!

Мой вопрос теперь состоит в том, если я делаю что-то не так, или если это походит на ошибку в.Net4? Походит на ошибку мне.. Это действительно работало просто великолепно в.Net3.5!

6
задан Dave Clemmer 15 August 2011 в 16:26
поделиться

1 ответ

Я нахожу это очень странным. Это прекрасно работало в .Net3.5, и я не вижу причин, почему это не должно работать сейчас!

Я сообщил об этом как об ошибке в Microsoft. Вы можете просмотреть отчет об ошибке здесь. Когда они подтвердят файл, исходный код решения с изолированной проблемой также должен быть доступен там.

3
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: