IsDragging = True时设置Thumb的光标

时间:2019-11-29 21:40:45

标签: wpf xaml controltemplate

我有一个在资源字典中定义的Thumb的控制模板。

<ControlTemplate TargetType="{x:Type Thumb}">
    <Border x:Name="PART_Border"
            Cursor="SizeWE"
            Padding="{TemplateBinding Padding}"
            Background="{TemplateBinding Background}"
            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</ControlTemplate>

ControlTemplate以我称为GridColumnHeaderGripper的样式实现,而这种样式在另一个资源字典中实现

<ControlTemplate TargetType="GridViewColumnHeader">
    <DockPanel>
    <Thumb x:Name="PART_HeaderGripper"
            DockPanel.Dock="Right"
            Margin="0,0,-8,0"
            Cursor="SizeWE"
            Style="{StaticResource GridColumnHeaderGripper}" />
    etc...

效果很好,但是,当我开始拖动Thumb时,光标将从“ SizeWE”更改为“ None”。我在StackOverflow上看到了与此类似的另一篇文章,提出了设置光标的触发器。

<ControlTemplate.Triggers>
    <Trigger Property="IsDragging" Value="True">
        <Setter Property="Cursor" Value="SizeWE"/>
    </Trigger>
</ControlTemplate.Triggers>

但是,此解决方案对我不起作用。

据我了解,我们可以使用Mouse.OverrideCursor静态属性覆盖游标。是否可以使用触发器设置此静态属性?拖动拇指时,我有什么办法可以更改光标?

1 个答案:

答案 0 :(得分:0)

Add 'Cursor' attribute where you actually declare thumb.  

<Window x:Class="ThumbCursor.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ThumbCursor"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <ControlTemplate x:Key="template" TargetType="{x:Type Thumb}">
            <Border x:Name="PART_Border"
            Cursor="SizeWE"
            Padding="{TemplateBinding Padding}"
            Background="{TemplateBinding Background}"
            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
        </ControlTemplate>
    </Window.Resources>
    <Grid>
        <Thumb x:Name="thmb" Height="50" Width="100" Cursor="SizeWE" Template="{StaticResource template}" DragDelta="thmb_DragDelta"/>
    </Grid>
</Window>