动态创建控件

1.容器控件.RegisterName("Name",要注册的控件)   //注册控件

2.容器控件.FindName("Name") as  控件类型            //找到控件并转换成相应类型

注意:仅通过 控件.Name来设置是不能通过FindName来找到控件的,必须注册 动态删除控件 1.容器控件.Children.Remove(控件) //移除控件

2.容器控件.UnregisterName("Name")                       //取消注册

其它设置

1.控件.SetValue(Grid.RowProperty, 0);                    //设置控件在Grid面板中的行数    控件.SetValue(Grid.ColumnProperty, 1);               //设置控件在Grid面板中的列数

2.Canvas.SetLeft("控件名", 50);                                //设置控件在Canvas面板中的横坐标    Canvas.SetTop("控件名", 50);                               //设置控件在Canvas面板中的纵坐标

eg:

当点击Button_Add按钮的时候在Canvas里添加一个Button;

当点击Button_Remove的时候把这个新加的Button移除;

设:Canvas 的Name为 canvas

代码:

  1. privatevoid Button_Add_Click(object sender, System.Windows.RoutedEventArgs e)
  2. {
  3. Button btn = new Button();
  4. //btn.Name = "newButton";//这里设置的Name是找不到的
  5. btn.Width = 100;
  6. btn.Height= 50;
  7. canvas.Children.Add(btn);
  8. canvas.RegisterName("newButton", btn);//注册名字,以便以后使用
  9. }
  10. privatevoid Button_Remove_Click(object sender, RoutedEventArgs e)
  11. {
  12. Button btn = canvas.FindName("newButton") as Button;//找到刚新添加的按钮
  13. if (btn != null)//判断是否找到,以免在未添加前就误点了
  14. {
  15. canvas.Children.Remove(btn);//移除对应按钮控件
  16. canvas.UnregisterName("newButton");//还需要把对用的名字注销掉,否则再次点击Button_Add会报错
  17. }
  18. }
private void Button_Add_Click(object sender, System.Windows.RoutedEventArgs e)
{
Button btn = new Button();
//btn.Name = "newButton";//这里设置的Name是找不到的
btn.Width = 100;
btn.Height= 50;
canvas.Children.Add(btn);
canvas.RegisterName("newButton", btn);//注册名字,以便以后使用
} private void Button_Remove_Click(object sender, RoutedEventArgs e)
{
Button btn = canvas.FindName("newButton") as Button;//找到刚新添加的按钮
if (btn != null)//判断是否找到,以免在未添加前就误点了
{
canvas.Children.Remove(btn);//移除对应按钮控件
canvas.UnregisterName("newButton");//还需要把对用的名字注销掉,否则再次点击Button_Add会报错
}
}

运行一下,就可以了。

转自:http://blog.csdn.net/wushang923/article/details/6688056

WPF 中动态创建、删除控件,注册控件名字,根据名字查找控件的更多相关文章

  1. WPF 中动态创建和删除控件

    原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.容器控件.FindName(" ...

  2. WPF中动态加载XAML中的控件

    原文:WPF中动态加载XAML中的控件 using System; using System.Collections.Generic; using System.Linq; using System. ...

  3. WPF中动态更新TextBlock文字中的超链接,文本

    1.------------------------------------------------------------------------- 修改超链接的文本文字: <TextBloc ...

  4. Delphi中动态创建窗体有四种方式

    Delphi中动态创建窗体有四种方式,最好的方式如下: 比如在第一个窗体中调用每二个,主为第一个,第二个设为动态创建 Uses Unit2; //引用单元文件 procedure TForm1.But ...

  5. 在DELPHI中动态创建控件以及控件的事件

    在DELPHI中我们经常要动态的创建控件以及控件的事件.例如,我们可能想根据程序需要动态的创建一些Tshape组件来创建某个图形,并使得在鼠标移动上去之后可以完成某些操作.这一般需要需要三步: 生成一 ...

  6. WPF 中动态改变控件模板

    在某些项目中,可能需要动态的改变控件的模板,例如软件中可以选择不同的主题,在不同的主题下软件界面.控件的样式都会有所不同,这时即可通过改变控件模板的方式实现期望的功能. 基本方法是当用户点击切换主题按 ...

  7. BroadcastReceiver接收电量变化的广播-------在代码中动态创建接受者

    本例为动态创建广播接收者即不是在AndroidManifest.xml文件中定义的广播接收着 代码: package com.qf.broadcastreceiver01; import androi ...

  8. Unity中动态创建Mesh

    什么是Mesh? Mesh是指的模型的网格,3D模型是由多边形拼接而成,而多边形实际上又是由多个三角形拼接而成的.即一个3D模型的表面其实是由多个彼此相连的三角面构成.三维空间中,构成这些三角形的点和 ...

  9. python中动态创建类

    class Foo(Bar): pass Foo中有__metaclass__这个属性吗?如果是,Python会在内存中通过__metaclass__创建一个名字为Foo的类对象(我说的是类对象,请紧 ...

随机推荐

  1. openmpi出现Segmentation Fault而终止运算

    欢迎关注我的社交账号: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://gith ...

  2. IOC Container(服务容器)的工作机制

    IOC Container 是laravel的一个核心内容,有了IOC Container在Laravel的强大表现,我们可以在Laravel中实现很大程度的代码维护性.(文档我是看的懵逼懵逼的(*^ ...

  3. Android Drawable资源

    Android实现应用d动画效果:比如App第一次打开的开始动画等 有两种:GIF动画和代码实现. 第一种:借助于Gif制作工具软件实现.一般是和第三方开源的GifView(https://githu ...

  4. ie8 table td拆分宽度不适应问题

    在table上加style="table-layout: fixed;"并在首行加一个高度为0且给定宽度的tr <table class="subtabledeta ...

  5. Qt之Meta-Object系统

    简述 Qt的元对象系统(Meta-Object System)提供了信号与槽机制,可用于对象间通信.运行时类别信息和动态属性系统. 元对象系统基于三个方面: QObject类:为objects提供了一 ...

  6. JavaScript自定义类和对象的方法

    备注:JavaScript中没有类class的概念,一般把原型对象看作类 1. 工厂方法--使用new Object创建对象并添加相关属性 var Obj = new Object;         ...

  7. Intellij IDEA 安装 Mybatis插件

    1.Ctrl+Alt+s

  8. Android Bundle、Handler和Message类介绍

    Bundle是一个载体,可以存放基本数据类型.对象等内容,相当于一辆汽车,可以装载很多东西,然后运到需要的地方,例如: Bundle mBundle=new Bundle(); mBundle.put ...

  9. <context:annotation-config> 和 <context:component-scan>的差别

    <context:annotation-config> is used to activate annotations in beans already registered in the ...

  10. MongoDB相关资料

    MongoDB的介绍及安装参考http://www.cnblogs.com/lipan/archive/2011/03/08/1966463.html 安装过程: 第一步:下载安装包:官方下载地址←单 ...