c#代码到XAML的转换

下面以一些常用控件从C#到XAML的转换为例说明其转换形式:

C#Window w=new Window();XAML<Window></Window>

C#:Page p=new Page();XAML:<Page></Page>

C#StackPanel panel = new StackPanel();XAML<StackPanel></StackPanel>

XAML通过类型转换器转变成C#代码(准确的说是代码隐藏文件)。这些转换器都是派生自TypeConverter的类。

一、界面组成上分析通过代码描述程序界面的逻辑树是XAML最主要的任务。当在XAML中使用非默认名字空间中的类或自定义类时,该类还需要使用XAML描绘其表观。如果将该部分工作转移到C#中进行,那么由于WPF中新引入的各个界面类并没有多少拥有带参数的构造函数,因此XAML声明中对属性的设置将转化为单独一行C#属性赋值语句。这大大增加了构建界面的代码的复杂度。

二、对于事件处理函数在XAML中的设置,使用类似属性设置的方式设置事件响应函数。该功能的使用将决定程序的界面与逻辑的分离程度,当工程需要界面设计师与程序员协同工作的时候,对该功能的使用需要界面设计师知晓程序员的内部实现,使界面与实现逻辑无法分离。如果程序员在编写执行逻辑的同时也负责XAML的编写,那么对该功能的使用不会有过大影响,但是对于提供动态分析XAML界面定义的软件来说,对该功能的使用极有可能导致第三方界面提供商对内部逻辑的错误调用。

三、简单界面逻辑主要指的就是触发器以及动画功能。触发器与运行逻辑之间的关联主要是通过触发器的EnterActions或者ExitActions中对函数的调用完成的。这种情况与在XAML中设置事件处理函数的情况相同。而动画功能与运行逻辑之间的联系是通过参与动画的属性来完成的。参与动画的属性可以使用索引以及子属性等多种方式对深层属性进行引用,但该深层属性常常由于属性更新等行为不再存在。

一般来说,XAML编译器对属性赋值的处理步骤是:首先,编译器检查属性声明中是否标明了TypeConverter特征属性。如果在该属性的声明中标明了该特征属性,那么XAML编译器就使用该声明中指定的类将字符串转化成相应类型的实例。如果在属性声明中并没有标明需要使用的类型转换器,那么XAML编译器就需要根据属性的类型寻找与其相关联的类型转换器。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangzhenping/article/details/5648587
个人分类: WPF
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭