是否有一个用作按钮控件模板的矩形的MouseDown setter属性?

时间:2016-04-03 02:01:55

标签: wpf xaml

正如标题所示,我正在寻找一个触发器属性,当在按钮上单击鼠标左键时触发该属性。问题是我的按钮有一个矩形作为它的控制模板,我想在点击按钮/矩形时更改填充/描边。

我能找到的唯一触发属性是“IsMouseOver”

像MouseDown或IsPressed这样的东西都不起作用。

我的xaml现在:

    <Button x:Name="my_Button" Click="my_Button_Click" Margin="268,91,-266,-94">
        <Button.Template>
            <ControlTemplate>
                <Rectangle HorizontalAlignment="Left" Height="20" Stroke="Black" VerticalAlignment="Top" Width="141" Margin="105,10,0,0" StrokeThickness="2">
                    <Rectangle.Style>
                        <Style TargetType="{x:Type Rectangle}">
                            <Setter Property="Fill" Value="Blue" />
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Fill" Value="Red"/>
                                    <Setter Property="Stroke" Value="Black"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Rectangle.Style>
                </Rectangle>
            </ControlTemplate>
        </Button.Template>
    </Button>

在Trigger属性“IsMouseOver”的位置,我希望该属性为MouseDown,然后继续将矩形的填充和描边设置为不同的颜色。

xaml我尝试过没有用过:

                                <Trigger Property="MouseDown" Value="True">
                                    <Setter Property="Fill" Value="Red"/>
                                    <Setter Property="Stroke" Value="Black"/>
                                </Trigger>

编辑:我想澄清一点,IsMouseOver与触发器属性完美配合,但我需要它是在鼠标单击按钮而不是悬停在上面时。

1 个答案:

答案 0 :(得分:1)

请参阅下面的DataTrigger

    <Button x:Name="my_Button" Click="my_Button_Click" Margin="268,91,-266,-94">
        <Button.Template>
            <ControlTemplate>
                <Rectangle HorizontalAlignment="Left" Height="20" Stroke="Black" VerticalAlignment="Top" Width="141" Margin="105,10,0,0" StrokeThickness="2">
                    <Rectangle.Style>
                        <Style TargetType="{x:Type Rectangle}">
                            <Setter Property="Fill" Value="Blue" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsPressed, RelativeSource={RelativeSource Mode=TemplatedParent}}" Value="True">
                                    <Setter Property="Fill" Value="Red"/>
                                    <Setter Property="Stroke" Value="Black"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Rectangle.Style>
                </Rectangle>
            </ControlTemplate>
        </Button.Template>
    </Button>