【问题标题】:Pointer events not triggered on UI Elements in custom control未在自定义控件中的 UI 元素上触发指针事件
【发布时间】:2021-09-23 11:47:46
【问题描述】:

我正在创建一个包含多个UI ElementsUserControl 应用程序。 UserControl 使用 ItemsControl 渲染为 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 上时,我想更改光标图标(基于我的情况下的条件检查,您可能在源代码中看到)。这看起来很简单,所以我尝试使用PointerEnteredPointerExited 事件来捕获和释放来自SelectionCanvas 的指针。和PointerMoved 更改光标图标。但似乎没有触发任何事件。

我也尝试绑定到 Viewport 网格元素,但也没有运气。

我不确定我在这里错过了什么。有人可以帮我吗?任何帮助深表感谢。请找到完整的源代码here

  • 请注意,启动项目/Resources 中包含一个示例 PDF,您必须从应用程序中打开它。

【问题讨论】:

  • @mm8 的回复应该可以解决问题。
  • 是的,成功了。

标签: c# xaml events uwp custom-controls


【解决方案1】:

PointerEnteredPointerExited 事件被引发,前提是应该引发它们的区域被绘制,因此尝试将CanvasBackground 属性设置为一些画笔,例如Transparent

<Canvas x:Name="SelectionCanvas" CompositeMode="SourceOver"             
        Background="Transparent"             
        PointerEntered="SelectionCanvas_PointerEntered"
        ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2019-09-09
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多