Стиль окна WPF не работает во время выполнения - PullRequest
9 голосов
/ 15 апреля 2010

Я создал приложение WPF в Visual Studio 2010 Express (C #) и добавил текст ниже в Application.Resources в App.xaml. Я вижу стиль, примененный к окну в конструкторе, но когда я запускаю приложение, фон окна становится белым.

Запуск в Windows XP на BootCamp на MacBook Pro, если это имеет значение.

Заранее спасибо,

Christian

    <Style TargetType="{x:Type Window}">
        <Setter Property="Background">
            <Setter.Value>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                    <GradientStop Offset="0" Color="WhiteSmoke" />
                    <GradientStop Offset="1" Color="Silver" />
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>

        <Setter Property="Padding" Value="20" />
    </Style>

Ответы [ 3 ]

11 голосов
/ 10 мая 2010

Microsoft повторила проблему, и похоже, что это может быть ошибка в WPF 4.0.

https://connect.microsoft.com/VisualStudio/feedback/details/555322/global-wpf-styles-are-not-shown-when-using-2-levels-of-references

После исследования, проведенного лицом, представившим ошибку, я взял все наши отдельные файлы ресурсов XAML, которые включены в словарь объединенных ресурсов, и вырезал и вставил текст стиля в один файл UberStyles.xaml. Я избегал любого использования MergedDictionaries.

Это решило проблему, и моя информация о стиле из моего приложения WPF 3.5 вернулась к моему приложению WPF 4.0.

На мой взгляд, это явная ошибка в WPF 4.0 - я не совсем уверен, как бы вы назвали это функцией, а поведение недокументировано. Я немного обеспокоен последствиями этого для платформы WPF 4.0 в целом. Вы бы подумали, что это было бы замечено при тестировании Visual Studio 2010 Release!

В любом случае, надеюсь, это поможет. Эта ошибка сводила меня с ума с тех пор, как мы обновились до VS2010 две недели назад.

0 голосов
/ 15 апреля 2010

У меня такая же проблема. Мы разработали библиотеку с пользовательскими стилями для каждого стандартного элемента управления, она прекрасно работает под .net 3.5 как в deigner, так и во время выполнения. Сегодня мы решили переключить наши проекты на .net4 (в wpf 4 появилось много новых интересных возможностей). После этого во время выполнения все стили, подобные этому, не работают во время выполнения, а применяются в конструкторе:

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

Стили с установленным x: Ключ работает нормально. Но нам нужно установить стиль по умолчанию для темы, а не устанавливать его для каждого элемента управления.

0 голосов
/ 15 апреля 2010

Наткнулся на следующее:

Как установить стиль окна WPF по умолчанию в app.xaml?

Ответ заключается в том, что стиль не будет применяться к производным типам.

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