我有一个在资源字典中定义的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
静态属性覆盖游标。是否可以使用触发器设置此静态属性?拖动拇指时,我有什么办法可以更改光标?
答案 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>