您的位置:首页 > 其它

点击控件动态创建新页面

2016-04-25 10:47 260 查看
在C#中,经常需要动态创建一个对象,而且根据点击控件之后,创建不同的对象,如果使用if语句,就会很麻烦,所以,现在提供一种动态创建控件的方法

其中原理还不是很清楚,刚接触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>


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: