c# - 如何更改整个 Canvas 的鼠标光标形状?

标签 c# wpf

我有一个 WPF 窗口,其中包含几个文本框、按钮和我在其中绘制图形的 Canvas 。我希望在 Canvas 上有十字光标,因为这样用户可以以更“科学”的方式指向有趣的区域:-)

奇怪的是,当我将光标设置为 Canvas 交叉时,它仍然是标准箭头,但是当鼠标悬停在我在 Canvas 上绘制的任何直线或折线上时,它是交叉的。

那么如何为整个 Canvas 设置光标(包括“空白”空间,没有绘制任何东西)?

最佳答案

要更改整个 Canvas 的鼠标光标形状,请向 Canvas 添加透明背景。

这是一个示例:

<Canvas Grid.Row="2" Background="Transparent">
   <Polyline Points="25,25 0,50 25,75 50,50 25,25 25,0" 
             Stroke="Blue" StrokeThickness="10"
             Canvas.Left="75" Canvas.Top="50">
      <Polyline.RenderTransform>
          <RotateTransform CenterX="0" CenterY="0" Angle="45" />
      </Polyline.RenderTransform>
   </Polyline>
   <Canvas.Style>
       <Style TargetType="{x:Type Canvas}">
          <Style.Triggers>
              <Trigger Property="IsMouseOver" Value="True" >
                <Setter Property="Cursor" Value="Cross" />
              </Trigger>
          </Style.Triggers>
        </Style>
   </Canvas.Style>
</Canvas>

关于c# - 如何更改整个 Canvas 的鼠标光标形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692179/

相关文章:

数据网格上的 WPF 触发器以根据绑定(bind)隐藏/显示列

c# - 将凹面 PathGeometry 填充为凸面(找到凹面顶点并移除它们)的简单方法是什么?

c# - 无效的列名 C#

.net - .NET 有图标集合吗?

c# - 将 Func 传递给 Where 将返回类型从 IQueryable 更改为 IEnumerable

c# - Type.GetMethod() 返回 null,即使方法确实存在

wpf - 右对齐 wpf 扩展器标题中的项目

wpf - DispatcherTimer滴答一次

c# - 局部变量与实例变量

c# - 使用 post/sendmessage 进行鼠标点击不起作用