3

我的DataTemplate样子是这样的:

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

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

如何创建透明DataTemplate并捕捉MouseLefButtonDown事件?

谢谢你。

4

2 回答 2

2

如果您想在 StackPanel 本身上捕获鼠标事件,您只需将其背景画笔设置为透明:

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

于 2009-08-25T13:23:38.110 回答
1

MouseLeftButtonDown是一个冒泡事件。这意味着它首先在最深的可能级别触发,然后通过逻辑树向上“冒泡”。如果您StackPanel正在处理的内容中包含内容MouseLeftButtonDown,那么您将永远不会看到事件向上冒泡,因此它永远不会到达您的StackPanel.

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

<StackPanel PreviewMouseLeftButtonDown="StackPanel_PreviewMouseLeftButtonDown">

然后看看你能不能抓住它。

于 2009-08-25T01:49:49.097 回答