指针事件未在自定义控件中的 UI 个元素上触发
Pointer events not triggered on UI Elements in custom control
我正在创建一个包含多个 UI Elements
的 UserControl
应用程序。使用 ItemsControl
将 UserControl
渲染为 StackPanel
,因为要渲染的 UserControls
的数量取决于用户的输入。
UserControl
中的基本XAML如下
<Grid x:Name="Viewport" VerticalAlignment="Top" HorizontalAlignment="Center">
<Border x:Name="ViewportBorder" Background="White" BorderThickness="2, 2, 2, 2" BorderBrush="#FF353334" />
<Image x:Name="Image" Margin="0" UseLayoutRounding="True" ManipulationMode="Scale"/>
<InkCanvas x:Name="InkCanvas" />
<Canvas x:Name="SelectionCanvas" CompositeMode="SourceOver" />
</Grid>
我想在用户将鼠标悬停在 SelectionCanvas
上时更改光标图标(基于我的情况的条件检查,您可能会在源代码中看到)。这看起来很简单,所以我尝试使用 PointerEntered
& PointerExited
事件从 SelectionCanvas
捕获和释放指针。和 PointerMoved
更改光标图标。但似乎触发了 none 个事件。
我也尝试绑定到 Viewport
网格元素,但也没有成功。
我不确定我在这里错过了什么。有人可以帮我吗?任何帮助深表感谢。请找到完整的源代码here.
- 请注意,启动项目
/Resources
中包含示例 PDF,您必须从应用程序中打开它。
PointerEntered
和 PointerExited
事件被引发,前提是应该引发它们的区域被绘制,所以尝试设置 Background
属性 Canvas
到一些画笔,例如 Transparent
:
<Canvas x:Name="SelectionCanvas" CompositeMode="SourceOver"
Background="Transparent"
PointerEntered="SelectionCanvas_PointerEntered"
...
我正在创建一个包含多个 UI Elements
的 UserControl
应用程序。使用 ItemsControl
将 UserControl
渲染为 StackPanel
,因为要渲染的 UserControls
的数量取决于用户的输入。
UserControl
中的基本XAML如下
<Grid x:Name="Viewport" VerticalAlignment="Top" HorizontalAlignment="Center">
<Border x:Name="ViewportBorder" Background="White" BorderThickness="2, 2, 2, 2" BorderBrush="#FF353334" />
<Image x:Name="Image" Margin="0" UseLayoutRounding="True" ManipulationMode="Scale"/>
<InkCanvas x:Name="InkCanvas" />
<Canvas x:Name="SelectionCanvas" CompositeMode="SourceOver" />
</Grid>
我想在用户将鼠标悬停在 SelectionCanvas
上时更改光标图标(基于我的情况的条件检查,您可能会在源代码中看到)。这看起来很简单,所以我尝试使用 PointerEntered
& PointerExited
事件从 SelectionCanvas
捕获和释放指针。和 PointerMoved
更改光标图标。但似乎触发了 none 个事件。
我也尝试绑定到 Viewport
网格元素,但也没有成功。
我不确定我在这里错过了什么。有人可以帮我吗?任何帮助深表感谢。请找到完整的源代码here.
- 请注意,启动项目
/Resources
中包含示例 PDF,您必须从应用程序中打开它。
PointerEntered
和 PointerExited
事件被引发,前提是应该引发它们的区域被绘制,所以尝试设置 Background
属性 Canvas
到一些画笔,例如 Transparent
:
<Canvas x:Name="SelectionCanvas" CompositeMode="SourceOver"
Background="Transparent"
PointerEntered="SelectionCanvas_PointerEntered"
...