我需要檢測(true或false)鼠標是否位於特定類型的對象上。有許多對象使用的數據模板。我不需要任何對象的實例,我只需要檢測我的鼠標是否在UI上的這種類型的元素上方。如何檢測鼠標是否直接位於WPF中的對象類型
這將是沿着線的東西:
If(mouse.DirectlyOver == StorageElementWrapper)
{
...
}
編輯:我的錯誤是,我用我的型像變量
我需要檢測(true或false)鼠標是否位於特定類型的對象上。有許多對象使用的數據模板。我不需要任何對象的實例,我只需要檢測我的鼠標是否在UI上的這種類型的元素上方。如何檢測鼠標是否直接位於WPF中的對象類型
這將是沿着線的東西:
If(mouse.DirectlyOver == StorageElementWrapper)
{
...
}
編輯:我的錯誤是,我用我的型像變量
需要注意的是DirectlyOver
很可能會發現裏面的東西是非常重要的你的元素,而不是你實際尋找的元素。要使用此屬性,您需要查看DirectlyOver
元素的父樹。這些方針的東西,與FindAncestorOrSelf
從this blog post來:
if (Util.FindAncestorOrSelf<StorageElementWrapper>((DependencyObject)mouse.DirectlyOver) != null)
{
...
}
或者,如果你有,(在這個例子中一個名爲myWrappers
集合)代碼引用您的StorageElementWrapper
S和他們從UIElement
獲得,這很可能是一個更好的方法,使用IsMouseOver
屬性:
if (myWrappers.Any(x => x.IsMouseOver))
// do something
,如果你有興趣在一個特定項目的一個概念:創建一個OnMouseOver
處理該特定對象(或者OnMouseEnter
)。通常在WPF中,事情處理這種事件處理方式,而不是命令性地枚舉和發現鼠標指針在哪裏。所以這樣,物品本身可以告訴你鼠標是否在它上面。該項目可以有一個公開的readonly
屬性公開這一點,你的代碼可以獲得該屬性的值。
我能夠將MouseEnter事件放入我的數據模板的邊框中。這個模板綁定到我的對象。而不是試圖以確定是否鼠標徘徊在對象上執行操作前,
object_MouseEnter(object sender, MouseEventArgs e)
{
if(....)
else
}
事件的每一個對象是「通過鼠標進入」時間解僱,我使用了條件語句來決定如何處理事件。
感謝以前有關鼠標事件的建議。
謝謝,這在同事的幫助下向正確的方向發送了我。在WPF中拖放操作非常簡單,但doDragDrop()看起來並不像定製構建那樣有用或有效。 – meisenman