问题提出:
我开发WPF程序是,喜欢用UserControl来简化WPF,提高重用性。但是有一个问题就是,UserControl里点击了一个按钮后,往往需要操作这个UserControl外的其他控件或者资源。这个如何实现呢?
问题解决:
经过我的研究,发下用WPF的事件能够很好的解决这个问题。原理是让Window主窗口监听所有的Button事件(包括它所有的UserControl),根据需要来执行相应的操作。
1、在Window的构造函数中添加按钮监听事件
public MainWindow()
{
InitializeComponent();
this.AddHandler(Button.ClickEvent, new RoutedEventHandler(ButtonClicked));
}
2、在Window中实现这个事件
private void ButtonClicked(object sender, RoutedEventArgs e)
{
switch (comType)
{
case ComandType.Tabs:
MainTab.SelectedIndex = toTab;
break;
default:
break;
}
comType = ComandType.None;
}
这里我定义了一个枚举类型ComandType来设置需要监听的事件类型,如果不需要监听,则可以在按钮事件里,将事件类型设置为None。这样当MainWindow监听到事件后,也会忽略掉。在Window执行完操作后,也会将事件类型设置为None,否则只要有按钮事件就会继续执行。
3、在UserControl中需要被传递的事件中里设置事件类型和相关的参数
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载
- 1
- 2
- 3
- 4
前往页