2009-06-15 71 views
5

這是交互元素內交互元素的一個古老的問題,但我希望ScatterViewItem包含其他表面交互元素,如SurfaceButton或SurfaceCheckBox。我有我所有的元素在那裏,他們反應了水龍頭等。問題是,我只有正常的ScatterView行爲,一旦我點擊一個不包含控件的區域。ScatterViewItems包含表面交互元素

即使聯繫人在SurfaceButton或SurfaceCheckbox上,是否有優雅的解決方案以允許拖動?

例如

<s:ScatterView >  
    <Grid Width="200" Height="200"> 
     <s:SurfaceButton /> 
    </Grid> 
</s:ScatterView> 

回答

1

在表面社區論壇上提出同樣的問題後,回覆是這與所有WPF控件行爲一致。例如,如果將交互元素添加到列表框中,則當鼠標位於按鈕上方時,ListBox不會對交互作出反應。

如果有其他人遇到這個問題,最好通過設計控制來解決這個問題,而不是試圖一起破解這個問題。控制行爲應該從一個應用程序到另一個應用程序以及一個控件保持一致。

+0

它已經過時,並且沒有更多的帖子。已經標記爲現在的答案,但如果將來有人添加更好的答案,我會改變它;) – 2009-07-25 17:08:56

0

通過監聽其中一個子控件上的ContactLeave事件,可以'入侵'這一行爲,並且在那裏調用contact.Capture(scatterviewitem)。這將告訴svi接管收聽和回覆聯繫人。然而,它將導致行爲與Surface的其他部分不一致,並可能會造成混淆。即使對自身也是不一致的......這樣可以在不擡起手指的情況下從內部控制切換到SVI,但用戶仍然必須擡起手指才能切換回內部控制。