首页 文章

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

提问于
浏览
0

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

我能找到的唯一触发器属性是“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>

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

xaml我试过没用过:

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

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

1 回答

  • 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>
    

相关问题