代码之家  ›  专栏  ›  技术社区  ›  Dusan Kocurek

如果数据模板有透明背景,如何捕捉鼠标左下键?

  •  3
  • Dusan Kocurek  · 技术社区  · 16 年前

    我的 DataTemplate 看起来像这样:

    <DataTemplate x:Key="ItemTemplate">
    <StackPanel MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
    

    但是我抓不到鼠标左键。如果我将模板的背景设置为某种颜色,就可以了。

    如何创建透明 数据模板 抓住 MouseLefButtonDown 事件?

    谢谢您。

    2 回复  |  直到 12 年前
        1
  •  2
  •   Milan Nankov    16 年前

    如果要在StackPanel本身上捕捉鼠标事件,只需将其背景画笔设置为透明即可:

    <StackPanel MouseLeftButtonDown="StackPanel_MouseLeftButtonDown"
            Background="Transparent" Height="400" Width="400" >
    <Button Content="dfsdf"/> 
    

        2
  •  1
  •   Charlie    16 年前

    MouseLeftButtonDown 是一个令人兴奋的事件。这意味着它首先在尽可能深的层次上发射,然后通过逻辑树向上“冒泡”。如果您的 StackPanel 那是处理 鼠标左键 ,则您将永远看不到事件气泡向上,因此它将永远无法到达您的 堆栈面板 .

    PreviewMouseLeftButtonDown 另一方面,是一个隧道事件。这意味着它将首先在顶层容器中发射,然后通过逻辑树向下“隧道”直到到达最低层。尝试将事件更改为:

    <StackPanel PreviewMouseLeftButtonDown="StackPanel_PreviewMouseLeftButtonDown">
    

    看看你能不能抓住它。

    推荐文章