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中这是不可能的?
如果您完全确定,您希望对所有按钮使用相同的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版本。
它可以帮助您按照您喜欢的方式安排控件,并将它们保存在一个容器中以处理事件。
我不能在这个项目中使用Blend,但也许是为了另一个项目。 – user310291 2011-01-24 11:41:11
您不需要Blend(或Blend许可证)来使用控件(我不完全确定许可证) – 2011-01-24 11:48:57
与我们分享XAML代码可能的帮助。 – Snowbear 2011-01-24 09:55:32