wpf - 当 IsDragging = True 时设置 Thumb 的光标
问题描述
我有一个在资源字典中定义的 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
静态属性覆盖光标。是否可以使用触发器设置此静态属性?拖动拇指时有什么办法可以改变光标吗?
解决方案
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>
推荐阅读
- angular - Json Array 找不到不同的支持对象
- django - 如何在 Django 模板中将标题与主页合并,两者都从不同的查询集中获取数据?
- docker - 无身份的 ASP.NET Core WebAPI 的 Sustainsys SAML2 示例
- javascript - 即使设置了 crossOrigin,fabric.Image.fromURL 上的交叉原点也会破坏 CORS
- c# - Serilog 将日志记录到控制台但不记录到文件
- php - 使用 datepicker 插入 PHP 日期
- linux - 在 Linux Mint 19.1 cinnamon 上配置 pytorch-kaldi 时出错
- reactjs - 从打字稿中的对象破坏属性
- makefile - 使用 autoconf 链接外部对象文件 (.o)
- php - 如何立即从数据库中检索数据然后插入?