2011-01-24 21 views
0

我有一些控制圈。我想將它們分組添加一個共同的處理程序,在這裏看到In WPF can I attach the same click handler to multiple buttons at once like I can in Javascript/Jquery?WPF Stackpanel問題:如何將Circle中的元素分組?

但是,如果使用的StackPanel他們不會沒有更多圈等什麼替代的StackPanel?

所以在WPF中這是不可能的?

+0

與我們分享XAML代碼可能的幫助。 – Snowbear 2011-01-24 09:55:32

回答

1

如果您完全確定,您希望對所有按鈕使用相同的eventhadler,則可以使用與您提到的鏈接中描述的相同的技巧。而不是StackPanel,你可以使用任何種類的容器(網格,畫布等)。

另一種方法是如果使用畫布(或網格),並把按鈕在它的圓形形狀(使用上的按鈕或在一情況下,Canvas.Left /右/頂/底屬性網格保證金屬性)。然後,您可以爲Canvas的MouseLeftButtonDown事件創建一個事件處理程序。通過這種方式,您可以捕捉Canvas中的每個鼠標點擊,但有時候,您可能想要在Canvas中的按鈕和其他所有內容之間做出區別(如果需要)。

下面是我的另類一點的代碼(爲了更好的理解):

<Canvas MouseLeftButtonDown="Canvas_MouseLeftButtonDown"> 
    <Button Canvas.Left="10", Canvas.Top="10"/> 
    <Button Canvas.Left="60", Canvas.Top="10"/> 
</Canvas> 


void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    //if you want to handle the buttonclicks only 
    if(e.Source is Button){ 
    do_your_stuff(); 
    } 
} 
1

來自Blend的PathListBox是一個選項嗎? 您可以read about it here。它被描述爲Silverlight,但Blend也有一個WPF版本。

它可以幫助您按照您喜歡的方式安排控件,並將它們保存在一個容器中以處理事件。

+0

我不能在這個項目中使用Blend,但也許是爲了另一個項目。 – user310291 2011-01-24 11:41:11

+0

您不需要Blend(或Blend許可證)來使用控件(我不完全確定許可證) – 2011-01-24 11:48:57