Application.Resources Style и Windows

 
0
 
.NET
ava
interv | 30.10.2012, 11:45
Добрый день.

Код App.xaml

<Application x:Class="License.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="{x:Type Window}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="#FF934A4A" />
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
</Application>

Стиль не привязывается к экземплярам класса Window, если поменять Window на Grid то к Grid стиль привязывается. В чем может быть проблемма?
Comments (3)
ava
Kefir | 03.11.2012, 00:03 #
Потому что стили WPF по умолчанию "привязываются" только если таргет стиля и самого элемента полностью совпадают. Думаю, что окно у тебя примерно такое:

class MyWindow : Window { }


А стиль задан для Window (не для MyWindow). Поэтому и с гридами у тебя все получается - таргет тип стиля полностью совпадает с типом контрола.
ava
interv | 15.11.2012, 07:31 #
точняк, скорее всего вы правы, но на других сайтах я прочитал такую вещь "Глобальные стили не привязываються к класу Window".
Найдено решение

App.xaml:

<Style TargetType="{x:Type Window}" x:Key="DefaultWindowsStyle">
<Setter Property="Background" Value="#FFF0F0F0"/>
</Style>


MyWindow.xaml:

<Window Style="{StaticResource DefaultWindowsStyle}" ... >
...
</Window>
ava
Kefir | 15.11.2012, 11:00 #
Собственно "Глобальные стили не привязываються к класу Window" - это следствие того, о чем я и сказал. Не привязываются они именно потому что в 99% случаев окна создают наследуя класс Window, то есть стили у которых TargetType = Window уже не будут по умолчанию привязываться к унаследованному классу.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Kefir   interv
advanced
Submit