点击控件动态创建新页面
2016-04-25 10:47
260 查看
在C#中,经常需要动态创建一个对象,而且根据点击控件之后,创建不同的对象,如果使用if语句,就会很麻烦,所以,现在提供一种动态创建控件的方法
其中原理还不是很清楚,刚接触C#,查了一些资料,只是达到了会用的地步(照猫画虎而已,仅作学习比较,有兴趣可以看我转载的另外几篇文章,也许会更清楚一些,还有推荐WPF中路由事件一节,在这一节中,关于路由事件讲解的很清楚)
我要实现的是点击菜单栏中的标签,生成一个tab页,其中我的Tab页是由用户自定义控件的方式自动创建的
闲话不多说,关键代码奉上:(cs文件中)
对应的XAML文件中
其中原理还不是很清楚,刚接触C#,查了一些资料,只是达到了会用的地步(照猫画虎而已,仅作学习比较,有兴趣可以看我转载的另外几篇文章,也许会更清楚一些,还有推荐WPF中路由事件一节,在这一节中,关于路由事件讲解的很清楚)
我要实现的是点击菜单栏中的标签,生成一个tab页,其中我的Tab页是由用户自定义控件的方式自动创建的
闲话不多说,关键代码奉上:(cs文件中)
//声明一个MenuItem对象
MenuItem cmd = (MenuItem)e.OriginalSource; Type type = this.GetType(); Assembly assembly = type.Assembly;
//创建对应的用户自定义控件,在这里可以创建window与page类型,必须注意的是类型必须对应,而且必须有强制类型转换,否则会报错
UserControl page = (UserControl)assembly.CreateInstance( type.Namespace + "." + cmd.Name);
//我自己的代码,添加页面 tabControl_Grid.Items.Add((new CloseableTabItem(cmd.Name, page))); //将生成的tab页置顶
tabControl_Grid.SelectedIndex = tabControl_Grid.Items.Count - 1;
对应的XAML文件中
<MenuItem Header="线路"> <MenuItem Name="Line1" Header="Line1" Click="OnLineClick"/> <MenuItem Name="Line2" Header="Line2" Click="OnLineClick"/> <MenuItem Name="Line3" Header="Line3" Click="OnLineClick"/> </MenuItem>
相关文章推荐
- SDAU练习二总结
- DataBinding的使用
- LoadRunner的安装与破解
- Comparable和Comparator的区别
- java中关于try、catch、finally中的细节分析
- centos install pssh
- 第七次站立会议
- hibernate将本地SQL查询结果封装成对象
- [SQL]批量 更改字符集脚本,批量查询约束,批量查询索引
- CarPlay wireless(蓝牙+WiFi)连接方案(Wi-Fi部分)
- 工厂设计模式
- Jsonp跨域获取json数据原理
- Difference-of-Gaussian (DoG) matlab代码
- left join
- MFC指定控件中添加右键菜单
- HDU 5670 Machine(水题锻炼思维)
- 深入字节码 -- 玩转 ASM-Bytecode
- centos 7 pip yum
- JAVA--策略模式(strategy)--设计模式十三
- 剑指Offer——重建二叉树