我在圆圈中有一些控件。我想将它们分组以添加一个公共处理程序,如In WPF can I attach the same click handler to multiple buttons at once like I can in Javascript/Jquery?
所示但是,如果我使用Stackpanel,他们将不再是圆圈,那么替代stackpanel是什么?
WPF中这是不可能的吗?
答案 0 :(得分:1)
来自Blend的PathListBox会是一个选项吗? 你可以read about it here。它描述的是Silverlight,但Blend也有WPF版本。
它可以帮助您按照自己喜欢的方式排列控件,并将它们保存在一个容器中以处理事件。
答案 1 :(得分:1)
如果你完全确定,你想对所有按钮使用相同的eventhadler,你可以使用你提到的链接下描述的相同技巧。您可以使用各种容器(Grid,Canvas等)代替StackPanel。
另一种方法是使用Canvas(或Grid),并将Buttons中的Buttons放入圆形(使用Buttons上的Canvas.Left / Right / Top / Bottom属性或网格情况下)保证金属性)。然后,您可以为Canvas的MouseLeftButtonDown事件创建一个事件处理程序。通过这种方式,您可以捕捉Canvas中的每一个鼠标点击,但有时候,您可能希望在Butvas和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();
}
}