silverlight 4 知识归类与汇总(一)XAML篇
2010-09-21 13:56
253 查看
1.XAML的命名空间
在VS中创建一个silverlight项目
其中MainPage.xaml的内容如下
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
是一个XML命名空间,其映射了多个.NET命名空间System.Windows,System.Windows.Automation
例如可以在Core项目的AssemblyInfo.cs中添加如下代码
(usingSystem.Windows.Markup;)
x:前缀/XAML语言XAML命名空间包含多个将在SilverlightXAML中频繁使用的编程构造。下面列出了最常见的x:前缀/XAML命名空间构造:
x:Key:为ResourceDictionary中的每个资源设置一个唯一键。
x:Class:指定为XAML页提供代码隐藏的类的CLR命名空间和类名称,并命名由标记编译器在Silverlight应用程序模型中创建的类。您必须具有一个这样的类才能支持代码隐藏或支持初始化为RootVisual。正是出于这些原因,所以您几乎总是看到映射了x:,即使没有任何资源且您从不使用x:Name也不例外。
x:Name:处理XAML中定义的对象元素后,为运行时代码中存在的实例指定运行时对象名称。对于不支持更为方便的FrameworkElement.Name属性的非常见情形,您可以将x:Name用于元素命名方案。
2.类型转换器
与之等价的C#代码为
这是怎么回事呢?嗯,这很简单:分析器使用一个类型转换器转换成正确的对象的字符串。在实践中,类型转换器对象是从TypeConverter类继承的。您可以将一个类型转换器的类型或属性通过使用TypeConverterAttribute。分析器将尊重这一选择,并使用指定的类型转换器转换成对象类型。
在Silverlight中,非托管类型转换器是为履行共同的转换您最希望发生(需要在内部SilverlightTypeConverter看看使用类,你会发现,你最终用“托管”XcpImports型)。
你仍然可以为您建立和使用自己的类型转换器类型。XAML的解析器将始终检查当前的value/type,如果它与一个托管类型转换器相关的,它会履行这种关系,你的转换器将被使用。
3.标记扩展
Silverlight支持在其默认的SilverlightXAML命名空间下定义且其XAML分析器可以理解的以下标记扩展。
Binding:支持数据绑定,此绑定将延迟属性值,直至在数据上下文中解释此值。
StaticResource:支持引用在ResourceDictionary中定义的资源值。
TemplateBinding:支持XAML中可与模板化对象的代码属性交互的控件模板。
RelativeSource:启用特定形式的模板绑定。
上面将显示为一个内容为其自身高度的按钮
可以通过空{}的方式摆脱标记扩展
在VS中创建一个silverlight项目
其中MainPage.xaml的内容如下
<UserControlx:Class="SilverlightGuid.Xaml.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:myCore="http://silverlight.imbob.com.cn" mc:Ignorable="d" d:DesignHeight="300"d:DesignWidth="400"> <Gridx:Name="LayoutRoot"Background="White"> <myCore:MyButtonHorizontalAlignment="Left"Name="myButton1"
VerticalAlignment="Top"Margin="12,12,0,0"/> </Grid> </UserControl>
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
是一个XML命名空间,其映射了多个.NET命名空间System.Windows,System.Windows.Automation
例如可以在Core项目的AssemblyInfo.cs中添加如下代码
(usingSystem.Windows.Markup;)
[assembly:XmlnsDefinition("http://silverlight.imbob.com.cn","SilverlightGuid.Core")]
x:前缀/XAML语言XAML命名空间包含多个将在SilverlightXAML中频繁使用的编程构造。下面列出了最常见的x:前缀/XAML命名空间构造:
x:Key:为ResourceDictionary中的每个资源设置一个唯一键。
x:Class:指定为XAML页提供代码隐藏的类的CLR命名空间和类名称,并命名由标记编译器在Silverlight应用程序模型中创建的类。您必须具有一个这样的类才能支持代码隐藏或支持初始化为RootVisual。正是出于这些原因,所以您几乎总是看到映射了x:,即使没有任何资源且您从不使用x:Name也不例外。
x:Name:处理XAML中定义的对象元素后,为运行时代码中存在的实例指定运行时对象名称。对于不支持更为方便的FrameworkElement.Name属性的非常见情形,您可以将x:Name用于元素命名方案。
2.类型转换器
<ButtonBackground="White"Content="Button"/>
与之等价的C#代码为
button1.Content="OK";
button1.Background=newSolidColorBrush(Colors.White);
这是怎么回事呢?嗯,这很简单:分析器使用一个类型转换器转换成正确的对象的字符串。在实践中,类型转换器对象是从TypeConverter类继承的。您可以将一个类型转换器的类型或属性通过使用TypeConverterAttribute。分析器将尊重这一选择,并使用指定的类型转换器转换成对象类型。
在Silverlight中,非托管类型转换器是为履行共同的转换您最希望发生(需要在内部SilverlightTypeConverter看看使用类,你会发现,你最终用“托管”XcpImports型)。
你仍然可以为您建立和使用自己的类型转换器类型。XAML的解析器将始终检查当前的value/type,如果它与一个托管类型转换器相关的,它会履行这种关系,你的转换器将被使用。
3.标记扩展
Silverlight支持在其默认的SilverlightXAML命名空间下定义且其XAML分析器可以理解的以下标记扩展。
Binding:支持数据绑定,此绑定将延迟属性值,直至在数据上下文中解释此值。
StaticResource:支持引用在ResourceDictionary中定义的资源值。
TemplateBinding:支持XAML中可与模板化对象的代码属性交互的控件模板。
RelativeSource:启用特定形式的模板绑定。
<ButtonBackground="White"Content="{BindingPath=Height,RelativeSource={RelativeSourceSelf}}"
Height="23"HorizontalAlignment="Left"Margin="126,0,0,0"Name="button1"VerticalAlignment="Top"Width="75"/>
上面将显示为一个内容为其自身高度的按钮
可以通过空{}的方式摆脱标记扩展
<ButtonContent="{}{Button}"Height="23"HorizontalAlignment="Left"Margin="12,64,0,0"
Name="button1"VerticalAlignment="Top"Width="75"/>
Silverlight版本4不公开支持定义自定义标记扩展的基类。
相关文章推荐
- silverlight 4 知识归类与汇总(二)常用控件篇
- silverlight 4 知识归类与汇总(三)元素的坐标系与布局面板
- ext相关知识汇总
- Core Animation 高级理论知识汇总
- Spark基础知识汇总
- 高负载、高并发网站架构知识汇总-大流量网站架构的几点认识
- 进程、线程相关知识汇总
- asp.net基础知识点小汇总
- 黑马程序员_c语言基础知识大汇总
- Testing - 软件测试知识汇总
- iOS 小知识汇总
- java第五天学习知识汇总
- 黑马程序员—面向对象知识汇总
- 转:Java基础知识部分汇总
- 前端学习知识汇总(包括js,css,node.js,AngularJS,jq等)
- 第四章知识结构汇总图
- android 屏幕密度相关知识汇总
- 光纤基础知识汇总
- 关于高性能计算的知识记录汇总-菜鸟级别? .
- 常用芯片电路知识汇总