Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataTemplate中按钮的鼠标悬停效果_C#_Wpf - Fatal编程技术网

C# DataTemplate中按钮的鼠标悬停效果

C# DataTemplate中按钮的鼠标悬停效果,c#,wpf,C#,Wpf,我使用DataTemplate以自定义视图(图像、文本等)显示一些按钮。以下是一个简化的示例: <DataTemplate DataType="{x:Type viewModel:ActionItem}"> <Button Background="SlateGray" Command="{Binding Command}"> <Button.Style> <Style TargetType="{x:Typ

我使用
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>


当触发器触发时,bcos不应出现这种情况,它会用您在trigger@Pamparanpa它不是以控制方式设置的,DP是直接设置的-如果你不相信我,请自己测试。顺便说一句:你的理由不一样。@Manfred:你是对的,现在觉得自己很傻。。。谢谢您的帮助。@S.Akbari:相关答案告诉您使用控制模板,我已经这样做了。