Примените тот же стиль к множественным объектам, которые соответствуют определенным критериям wpf - PullRequest
0 голосов
/ 28 июня 2011

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

например, я надеюсь сделать что-то вроде:

вот мой стиль в ресурсах моего приложения:

     <Style x:Key="someStyle">
        <Style.Resources>
            <Color x:Key="MenuBackground2">#BB252525</Color>
            <CornerRadius x:Key="CornerRadiusMenu2">7</CornerRadius>
            <Border x:Key="MainBorder2" >
                <Border.Background>
                    <SolidColorBrush Color="{DynamicResource MenuBackground}"/>
                </Border.Background>
            </Border>
        </Style.Resources>                       
    </Style>

, а затем на месте MainWindow.xaml:

<Border Margin="498,90,25,0" Name="brdMain" Style="{DynamicResource someStyle}"></Border>   

но когда я это делаю, brdMain, похоже, не привязывается к этому стилю ...

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Ваш Style определен неправильно. Это должна быть коллекция Setters. Например, ваш стиль должен быть:

 <Style x:Key="someStyle">
    <Setter Property="Background" Value="#BB252525"/>
    <Setter Property="CornerRadius" Value="7"/>
    etc ...                      
</Style>

A Style - это немного больше, чем набор установщиков свойств. Вы можете установить только свойства объекта, к которому был применен Style.

0 голосов
/ 28 июня 2011
   <Style x:Key="someStyle" TargetType="{x:Type Border}">
        <Setter Property="Control.Background" Value="#BB252525"/>
        <Setter Property="Control.BorderThickness" Value=".5"/>
        <Setter Property="Control.BorderBrush" Value="White"/>
        <Setter Property="CornerRadius" Value="7"/>                                     
    </Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...