动态创建控件

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. 三张图彻底了解Java中字符串的不变性

    转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...

  2. java集合框架之java HashMap代码解析

     java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...

  3. canvas实现音乐中的歌词播放效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 网络与RPC

    网络与RPC 标签 : Java基础 Java为网络编程提供的java.net包封装了底层通信细节, 包含了大量的基础组件以及TCP/UDP协议的编程接口, 使得开发者可以专注于解决问题, 而不用关注 ...

  5. hduoj-----(1068)Girls and Boys(二分匹配)

    Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. 5月11日 ArrayList集合复习、特殊集合、枚举类型

    一.ArrayList集合复习 //定义 ArrayList al = new ArrayList(); //添加元素 al.Add(); //插入元素 al.Insert(,); //查看个数 in ...

  7. Eclipse 反编译器

    Help-->Install New SoftWare 贴上反编译地址:http://opensource.cpupk.com/decompiler/update/ 选择add,一路向北,起飞.

  8. MongoDB相关资料

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

  9. easy_install jinja2 mac linux

    error: can't create or remove files in install directory The following error occurred while trying t ...

  10. Assert断言测试

    assert编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式.断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真.可以在 ...