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

Ale*_*nor 3 .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>
Run Code Online (Sandbox Code Playgroud)

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

Jaw*_*har 5

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

   <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>
Run Code Online (Sandbox Code Playgroud)

  • 矩形不在按钮的内容内。矩形和按钮,两者都在同一个容器(网格)中。 (2认同)