【问题标题】:Setting some properties on "ismouseover"在“ismouseover”上设置一些属性
【发布时间】:2018-05-18 22:59:56
【问题描述】:

如果鼠标悬停在按钮上,我们会尝试设置一些按钮的属性。 奇怪的是,它只对某些属性有效。

我们创建了一个空白的 WPF 应用程序并简单地添加了这些代码行:

<Button Content="{Binding IsMouseOver, RelativeSource={RelativeSource Self},Mode=OneWay}">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="True">
                    <Setter Property="Foreground" Value="Red" />
                    <Setter Property="Background" Value="Yellow" />
                    <Setter Property="BorderThickness" Value="5"></Setter>
                    <Setter Property="BorderBrush" Value="BurlyWood"></Setter>
                </DataTrigger>
                <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="False">
                <Setter Property="Foreground" Value="Green" />
                <Setter Property="Background" Value="BlueViolet" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>            
</Button>

“假”触发器就像一个魅力。 "True"-Trigger 只设置 BorderThickness 和 Foreground。 背景和边框笔刷将被忽略。

谁能告诉我如何解决这个问题?

【问题讨论】:

标签: c# wpf


【解决方案1】:

这是按钮的默认行为,以便更改定义您自己的按钮模板,请参阅Control Template

<Button Content="{Binding IsMouseOver, RelativeSource={RelativeSource Self},Mode=OneWay}">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border Background="{TemplateBinding Background}"
                                    BorderBrush="{TemplateBinding BorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    >                                     
                                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="True">
                        <Setter Property="Foreground" Value="Red" />
                        <Setter Property="Background" Value="Yellow" />
                        <Setter Property="BorderThickness" Value="5"></Setter>
                        <Setter Property="BorderBrush" Value="BurlyWood"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="False">
                        <Setter Property="Foreground" Value="Green" />
                        <Setter Property="Background" Value="BlueViolet" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-20
    • 2019-09-05
    • 2022-09-23
    • 2013-02-28
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    相关资源
    最近更新 更多