您的位置:首页 > 其它

silverlight 4 知识归类与汇总(一)XAML篇

2010-09-21 13:56 253 查看
1.XAML的命名空间

在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不公开支持定义自定义标记扩展的基类。

SilverlightGuid.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
章节导航