WPF更改按钮样式以在禁用时更改光标?

时间:2014-12-04 01:29:43

标签: .net wpf xaml wpf-4.0

我在IsEnabledFalse时尝试了以下方法来更新按钮的光标:

<Button Content="Test" IsEnabled="False">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Cursor" Value="No"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

然而按钮光标不会改变...如果我尝试更改其他属性,例如背景,但这样可以正常工作......有人可以解释为什么这不起作用吗?

1 个答案:

答案 0 :(得分:5)

禁用元素时,无法触发鼠标悬停事件。游标将根据鼠标移动而改变。要解决此问题,请在按钮上放置另一个元素,例如矩形,并在禁用按钮时更改其光标。通过使其不透明度&#34; 0&#34;隐藏矩形。 (无可见性=&#34;折叠&#34;)。

   <Grid>
        <Button Content="Blah"
                x:Name="btn"
                IsEnabled="False" />
        <Rectangle Opacity="0"
                   Fill="Transparent">
            <Rectangle.Style>
                <Style TargetType="Rectangle">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=btn, Path=IsEnabled}"
                                     Value="False">
                            <Setter Property="Cursor"
                                    Value="No" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Rectangle.Style>
        </Rectangle>
    </Grid>