没有合适的资源?快使用搜索试试~ 我知道了~
WPF中UserControl如何访问它所属的Window的控件或事件.
3星 · 超过75%的资源 需积分: 44 71 下载量 142 浏览量
2016-06-14
14:49:49
上传
评论
收藏 2KB TXT 举报
温馨提示
试读
2页
WPF中UserControl如何访问它所属的Window的控件或事件.
资源推荐
资源详情
资源评论
问题提出:
我开发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中需要被传递的事件中里设置事件类型和相关的参数
我开发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中需要被传递的事件中里设置事件类型和相关的参数
资源评论
- BBplus2020-03-11还是有点用的
Canis_lupus_
- 粉丝: 6
- 资源: 69
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功