我正試圖實作拖放。所以我需要在一個 eventhandler 中開始拖動操作。 我必須如何在一個樣式中正確地設定 eventhandler?
看看我的代碼吧
<UserControl x:Class="MyProject.UserControl1"/span>
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"/span>
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"。
mc:Ignorable="d"/span>>/span>
< ListBox ItemsSource="{Binding MyItems}" DisplayMemberPath="Name">
<ListBox.ItemContainerStyle>/span>
< Style TargetType="ListBoxItem" BasedOn="{StaticResource {x: Type ListBoxItem}}">
< EventSetter Event="MouseDown" Handler="OnMouseDownStartDrag" />
</Style>>
</ListBox.ItemContainerStyle>/span>
</ListBox>/span>
</UserControl>
我試著在后面的代碼中呼叫OnMouseDownStartDrag,在用戶控制元件的viewmodel中,MyItems存在,并且在MyItems的單個元素中(一些資料類)。
不幸的是,OnMouseDownStartDrag從未被呼叫。我錯過了什么?樣式上有什么問題嗎?我應該將OnMouseDownStartDrag放在哪里,應該以何種方式呼叫它?
我使用的是WPF 4.6.2
。uj5u.com熱心網友回復:
根據這個帖子,似乎問題不在你如何設定或在哪里設定EventHandler。
您應該嘗試使用PreviewMouseDown而不是MouseDown。因此,它將像
<UserControl x:Class="MyProject.UserControl1"_span>
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"/span>
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"。
mc:Ignorable="d"/span>>/span>
< ListBox ItemsSource="{Binding MyItems}" DisplayMemberPath="Name">
<ListBox.ItemContainerStyle>/span>
< Style TargetType="ListBoxItem" BasedOn="{StaticResource {x: Type ListBoxItem}}">
< EventSetter Event="PreviewMouseDown" Handler="OnMouseDownStartDrag" />
</Style>>
</ListBox.ItemContainerStyle>/span>
</ListBox>/span>
我已經試過這段代碼,并從樣式中設定了它,它是有效的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307889.html
標籤:
上一篇:IsKeyboardFocusWithinPopup
下一篇:C#WPF-圓潤的背景顏色
