波斯马BOSSMA Information Technology

Silverlight事件处理和动态创建控件

发布时间:2008年11月20日 / 分类:ASP.NET, Silverlight / 11,183 次浏览 / 评论

[源自Silverlight tutorial]
这篇文章,介绍Silverlight应用中的事件处理和动态创建控件。

1、我们先来看一个例子:

注意以x:作为前缀的属性,如:x:Class、x:Name,这些都是编程构造,也就是说他们都可以进行相关的程序编码。
x:Class:配置 XAML 编译以便在标记与代码隐藏之间联接分部类,它由命名空间和类名组成,所有的事件处理都在这个对应的文件中进行。
x:Name:控件的唯一标记。

在这个例子中,我们通过XAML为Canvas控件定义了一个事件处理,实际上这是一个事件委托,我们将Canvas_Loaded绑定到Loaded事件。

然后看一下在cs文件中的处理(在XAML文件中选择事件名称,右键就可以定位到事件处理):

这段代码的意思是,当Canvas加载的时候,将myButton控件的Content设置为Please Click Me。
在设计时的时候我们可以看到,myButton控件上显示的是Hello,但当我们运行这个程序的时候,显示已经变为Please Click Me,并且控件能够自动适应文本的内容,显示良好的界面。

在这种事件声明方式中,在XAML文件中,指定了方法的名称(没有参数),以及绑定到的事件。
同时在对应的cs文件中,添加了符合.NET事件处理格式的方法,这个方法对应XAML文件中指定的方法名。
第一个参数指定了触发这个事件的对象,第二个参数是一个EventArgs类型或者一个继承了EventArgs的类型,这里是RoutedEventArgs。

2、除了这种定义事件处理的方式,还可以在代码中直接定义
在xaml中定义如下:

一个Button控件。

接下来,在CS文件中添加事件委托,可以使用代码提示功能来完成输入。

现在可以运行以查看效果。

3、在Silverlight 2中,所有的XAML控件与CLR对象同构,所以完全可以在代码中来创建这些控件。
我们在XAML中可以这样写:

在代码中,可以这样定义:

它们的效果是一样的。

大多数情况下,推荐使用XAML来定义控件,可以更方便的创建、修改和控制。
当你在设计时不清楚将创建哪些控件时,你可以使用动态创建控件。
看一个例子:

由于没有截图,请自己运行查看效果。
OK,这篇文章到此结束。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《Silverlight事件处理和动态创建控件

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

目前有2 条评论

  1. ghx88 沙发:

    this.newButtonPosition += 30;
    ==========================
    这一步不明白, 这个可以设置按钮的位置吗?

    • Thickness用来描述矩形周围框架的粗细,我理解为margin,四个值分别为left、top、right、bottom。
      这里使用:
      Thickness tn = new Thickness(10,this.newButtonPosition,0,0);
      然后设置:
      this.newButtonPosition += 30;

      意思是这个新按钮的top margin在当前点击按钮的基础上在加30。

发表评论