繁体   English   中英

DataTemplate中按钮的MouseOver效果

[英]MouseOver effect for button in DataTemplate

我使用DataTemplate来显示一些带有自定义视图的按钮(带有图像,文本等)。 这是一个简化的示例:

<DataTemplate DataType="{x:Type viewModel:ActionItem}">

    <Button Background="SlateGray" Command="{Binding Command}">
        <Button.Style>
            <Style TargetType="{x:Type Button}">
                <Setter Property="Background" Value="Green"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <Border Background="{TemplateBinding Background}">
                                <ContentPresenter />
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="DarkGoldenrod"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>

        <TextBlock Text="{Binding Name}" />

    </Button>

</DataTemplate>

为什么鼠标悬停效果根本不起作用?

因为Background="SlateGray"会覆盖您可以在样式中触发的所有内容。 删除那一点,它应该工作。

请在模板级别设置触发器,例如

<DataTemplate DataType="{x:Type viewModel:ActionItem}">

    <Button Background="SlateGray" Command="{Binding Command}">
        <Button.Style>
            <Style TargetType="{x:Type Button}">
                <Setter Property="Background" Value="Green"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <Border Background="{TemplateBinding Background}">
                                <ContentPresenter />
                            </Border>

                 <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="DarkGoldenrod"/>
                    </Trigger>
                </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>

            </Style>
        </Button.Style>

        <TextBlock Text="{Binding Name}" />

    </Button>

</DataTemplate>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM