我是GUI开发人员的新手,特别是使用WPF,并且不知道相关模式。所以我想问你一个不时出现的问题,我不确定最好的解决方案。在嵌套用户控件中处理事件的最佳方式
让我们有三个用户控件A,B,C和控件A包含控件B,控件B包含控件C.让控件C有一个按钮。这个点击事件必须使用来自A类的数据来解决。我看到以下可能的方式来排序这种情况:
1)将方法InnerButtonClick(object sender,RoutedEventArgs e)添加到类A由我们的按钮引起的冒泡事件。缺点:
i)此方法将捕获A的孩子的所有button.click事件。所以我将不得不在方法中实现一些条件逻辑,以检查事件是否由我们的按钮引起。 ii)要在那里获得C的属性并不容易。它可能看起来像
var btn = (Button)e.OriginalSource;
string userName = ((ActionButtons)((UserControl)((StackPanel)btn.Parent).Parent)).UserName;
如果按钮处于StackPanel中和的StackPanel在用户控制下
2)提供的类C.例如必要的数据访问,数据传递给所述B类,然后C. C.缺陷:
我)它往往不是那么容易。 ii)它会导致额外的方法/构造函数参数。
3)在A类中创建一个静态方法,该方法可以由C类方法调用。 缺点:
i)看起来有点不愉快。这是单身人士的方式,来自'黑暗部队'的模式)
对不起,我误读了那一点。请参阅编辑的回复。 – Bubblewrap 2010-07-20 09:17:42
谢谢。这听起来不错 – 2010-07-20 09:26:29