我DataTemplate
看起來是這樣的:如果數據模板具有透明背景,如何捕獲鼠標左下?
<DataTemplate x:Key="ItemTemplate">
<StackPanel MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
但是我不能趕上鼠標左鍵向下。如果我將模板的背景設置爲某種顏色,則可以。
如何創建透明DataTemplate
並捕獲MouseLefButtonDown
事件?
謝謝。
我DataTemplate
看起來是這樣的:如果數據模板具有透明背景,如何捕獲鼠標左下?
<DataTemplate x:Key="ItemTemplate">
<StackPanel MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
但是我不能趕上鼠標左鍵向下。如果我將模板的背景設置爲某種顏色,則可以。
如何創建透明DataTemplate
並捕獲MouseLefButtonDown
事件?
謝謝。
MouseLeftButtonDown
是冒泡事件。這意味着它首先在最深的層次上觸發,然後通過邏輯樹向上「冒泡」。如果您的StackPanel
中包含的內容正在處理MouseLeftButtonDown
,那麼您將永遠不會看到事件泡沫向上,因此它永遠不會到達您的StackPanel
。
PreviewMouseLeftButtonDown
另一方面是隧道事件。這意味着它將首先在頂層容器中觸發,然後通過邏輯樹向下「隧道」,直到達到最低級別。嘗試將您的活動更改爲:
<StackPanel PreviewMouseLeftButtonDown="StackPanel_PreviewMouseLeftButtonDown">
然後看看你是否能夠趕上它。
如果你想捉對StackPanel的本身,你只需要設置它的背景畫筆是透明的鼠標事件:
<StackPanel MouseLeftButtonDown="StackPanel_MouseLeftButtonDown"
Background="Transparent" Height="400" Width="400" >
<Button Content="dfsdf"/>
嗯,這是我的問題。如果背景是Transparetn,我無法收到活動。如果它被設置爲黑色,白色等,我可以接收事件MouseLeftButtonDown。 爲了更好地解釋,我需要具有transaprent背景的列表框項目,我可以通過鼠標拖動。因此我需要接收MouseLeftButtonDown並開始拖動操作。 – 2009-08-25 14:57:23
從技術上講,你的StackPanel是透明的,但你確實有背景設置爲null。這與設置Background =「Transparent」不同,後者會導致相同的外觀,但是您的StackPanel將接收鼠標事件。 – CodeNaked 2011-08-09 02:05:30