wkololo_4ever
@wkololo_4ever

Тригет для смены цвета

Есть 2 кнопки
<Button Content="Какая-то кнопка" Style="{StaticResource LineButton}"/>
        <Button Content="Button"  Grid.Row="1" Style="{StaticResource LineButton}"/>

Шаблон которых я переопределил
<Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <DockPanel LastChildFill="True">
                            <Grid x:Name="controlLayout">
                                <Rectangle x:Name="buttonSurface" 
                                           Fill="{TemplateBinding Background}"/>
                                <Label x:Name="buttonCaption"
                                       Content="{TemplateBinding Content}" 
                                       HorizontalAlignment="Center"
                                       VerticalAlignment="Center"
                                       Background="{TemplateBinding Background}"/>
                            </Grid>
                        </DockPanel>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="buttonCaption"
                                        Property="Background"  Value="#FFFFF500"/>
                                <Setter TargetName="buttonSurface"
                                        Property="Fill" Value="#FFFFF500"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>

Как дать возможность менять цвет, который в данном случае жестко закодирован "#FFFFF500", в триггере "IsMouseOver"? То есть, что бы я мог при создании новой кнопки в xaml определять на какой цвет должен меняться фон кнопки.
  • Вопрос задан
  • 2700 просмотров
Решения вопроса 1
ad1Dima
@ad1Dima
Если варианты с несколькими стилями не подходят, то отнаследуйтесь от кнопки и создайте DependencyProperty к которому будете биндиться из стиля.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
думаю, что проще всего, чтобы не изменять существующий код, лучше сделать все изменения напрямую в коде (C#) - допустим, в методе OnApplyTemplate или в любом другом инициализаторе явным образом указать, у какой кнопки какой должен быть цвет. т.е. создать какой-нибудь метод SetButtonOnMouseOberTriggerColor в котором, пройтись по этому шаблону из кода...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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