WPF Stackpanel问题:如何将Circle中的元素分组?

WPF Stackpanel问题:如何将Circle中的元素分组?

问题描述:

我有一些控制圈。我想将它们分组添加一个共同的处理程序,在这里看到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

如果您完全确定,您希望对所有按钮使用相同的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(); 
    } 
} 

来自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