【问题标题】:Does the Shapes have click event and Children in WPF形状是否在 WPF 中有单击事件和子项
【发布时间】:2019-04-01 06:13:00
【问题描述】:

我正在创建一个 Mancala 游戏。我在网格中有一个画布,在画布内我有代表孔的圆圈和代表 Mancalas 的矩形,我也有代表石头的图像。我已经使用 Image 控件来获取图像。

图像在圆圈中。他们有 ZIndex -2 所以他们在圆圈下面是正确的,圆圈是透明的,所以你可以看穿。

我想让圆圈以某种方式可点击(我知道形状中没有点击事件,但在另一个有点类似于点击的事件中就足够了)。然后该圆圈下方的图像将移动到下一个圆圈下方画布上的不同坐标。

所以我的问题是:有没有办法给圈子孩子,这样我就可以知道在特定时间该特定圈子中有多少图像?任何额外的建议将不胜感激。

谢谢

【问题讨论】:

  • 我想到了两种解决方案 - 将您想要交互的形状包装在 UserControl 中并在那里处理点击,或者使用 DrawingVisuals 而不是支持命中测试的形状
  • 你好 Nasir,你可以使用“MouseUp”事件,据我所知,它与“Click”是一样的。

标签: c# wpf visual-studio wpf-controls


【解决方案1】:

Shape 没有Click 事件,但您可以处理MouseLeftButtonDown 事件。

它也没有Children 属性,但您可以通过将Shape 及其“子”元素添加到相同的Grid 来解决您的问题,例如:

<Grid Background="Transparent" MouseLeftButtonDown="OnMouseLeftButtonDown">
    <Ellipse Fill="Red" Width="100" Height="100" />
    <Image ... />
</Grid>

private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    Grid clickedGrid = (Grid)sender;
    Ellipse ellipse = clickedGrid.Children[0] as Ellipse;
    //...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多