首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按钮不触发IsMouseOver

按钮不触发IsMouseOver
EN

Stack Overflow用户
提问于 2021-08-06 03:30:22
回答 1查看 63关注 0票数 0

问题是,当我悬停按钮时,IsMouseOver不工作,尽管我自定义了按钮,但它不工作。

你能说出错误在哪里吗?

代码语言:javascript
复制
    <cc:CustomFlatButton Grid.Column="1"
                            Margin="1,0,5,4"
                            Command="{Binding ElementName=me, Path=Command疑い}"
                            CommandParameter="{Binding}"
                            IsEnabled="{Binding Path=疑いIsEnableFlag}">
             
            <Run FontWeight="Bold">
            疑い病名
        </Run>
             
        <Button.Style>
            <Style TargetType="cc:CustomFlatButton">

                <Setter Property="MinWidth" Value="80" />
                <Setter Property="FontFamily" Value="メイリオ" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type cc:CustomFlatButton}">
                            <Border Height="22"
                                    Margin="1"
                                    VerticalAlignment="Center"
                                    Background="White"
                                    BorderBrush="#FFFF5656"
                                    BorderThickness="2"
                                    CornerRadius="6"
                                    RenderOptions.BitmapScalingMode="NearestNeighbor"
                                    TextOptions.TextFormattingMode="Display"
                                    UseLayoutRounding="True">
                                <Label Padding="0,1,0,0"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Center"
                                        Content="{TemplateBinding Content}"
                                        Foreground="Black" />
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <Trigger Property="cc:CustomFlatButton.IsMouseOver" Value="True">
                        <Setter Property="Background" Value="DarkGoldenrod"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </cc:CustomFlatButton>

我还检查了是否使用了trigger Property="IsMouseOver"。它也不起作用。问题出在哪里?

EN

回答 1

Stack Overflow用户

发布于 2021-08-06 06:06:27

您已经更改了button模板,并且在此模板中没有任何属性绑定到按钮的背景。

在触发器中,您可以更改此属性的值,但由于没有人使用此属性,因此显示中不会发生任何更改。

有两个主要选项需要解决。

  1. 将边框的背景绑定设置为按钮的Backgroud属性:

代码语言:javascript
复制
    <cc:CustomFlatButton Grid.Column="1"
                            Margin="1,0,5,4"
                            Command="{Binding ElementName=me, Path=Command疑い}"
                            CommandParameter="{Binding}"
                            IsEnabled="{Binding Path=疑いIsEnableFlag}">

        <Run FontWeight="Bold">
            疑い病名
        </Run>

        <Button.Style>
            <Style TargetType="cc:CustomFlatButton">

                <Setter Property="MinWidth" Value="80" />
                <Setter Property="FontFamily" Value="メイリオ" />
                <Setter Property="Background" Value="White"/>
                <Setter Property="Template">

                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type cc:CustomFlatButton}">
                            <Border Height="22"
                                    Margin="1"
                                    VerticalAlignment="Center"
                                    Background="{TemplateBinding Background}"
                                    BorderBrush="#FFFF5656"
                                    BorderThickness="2"
                                    CornerRadius="6"
                                    RenderOptions.BitmapScalingMode="NearestNeighbor"
                                    TextOptions.TextFormattingMode="Display"
                                    UseLayoutRounding="True">
                                <Label Padding="0,1,0,0"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Center"
                                        Content="{TemplateBinding Content}"
                                        Foreground="Black" />
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <Trigger Property="cc:CustomFlatButton.IsMouseOver" Value="True">
                        <Setter Property="Background" Value="DarkGoldenrod"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </cc:CustomFlatButton>

  1. 或使用ControlTemplate触发器更改边框背景。

但是,如果CustomFlatButton是一个自定义控件而不是UserControl,则这是适用的。

也就是说,CustomFlatButton不应该有任何预定义的XAML。

代码语言:javascript
复制
        <cc:CustomFlatButton Grid.Column="1"
                            Margin="1,0,5,4"
                            Command="{Binding ElementName=me, Path=Command疑い}"
                            CommandParameter="{Binding}"
                            IsEnabled="{Binding Path=疑いIsEnableFlag}">
             
            <Run FontWeight="Bold">
            疑い病名
        </Run>
             
        <Button.Style>
            <Style TargetType="cc:CustomFlatButton">

                <Setter Property="MinWidth" Value="80" />
                <Setter Property="FontFamily" Value="メイリオ" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type cc:CustomFlatButton}">
                            <Border x:Name="PART_Border"
                                    Height="22"
                                    Margin="1"
                                    VerticalAlignment="Center"
                                    Background="White"
                                    BorderBrush="#FFFF5656"
                                    BorderThickness="2"
                                    CornerRadius="6"
                                    RenderOptions.BitmapScalingMode="NearestNeighbor"
                                    TextOptions.TextFormattingMode="Display"
                                    UseLayoutRounding="True">
                                <Label Padding="0,1,0,0"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Center"
                                        Content="{TemplateBinding Content}"
                                        Foreground="Black" />
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="cc:CustomFlatButton.IsMouseOver" Value="True">
                                    <Setter Property="Background" Value="DarkGoldenrod" TargetName="PART_Border"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Button.Style>
    </cc:CustomFlatButton>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68675768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档