Easy Object References with {x:Reference}
Built-in Types
Generics in XAML with
Support for Arbitrary Dictionary Keys
Use of Non-Default Constructors with
Use of Static Factory Methods with
With .NET 4.0 Microsoft will bring up a improved version of XAML. This arcitle shows you the language enhancements they made.
The following types are included into the XAML language:
Generics in XAML with
If you want to use an
Use of Non-Default Constructors with
In XAML 2006 objects must have a public default constructor to use them. In XAML 2009 you can pass constructor arguments by using the
Use of Static Factory Methods with
When you have a type that has no public constructor but a static factory method you had to create that type in code in XAML 2006. With XAML 2009 you can use the
Built-in Types
Generics in XAML with
x:TypeArgumentsSupport for Arbitrary Dictionary Keys
Use of Non-Default Constructors with
x:ArgumentsUse of Static Factory Methods with
x:FactoryMethodWith .NET 4.0 Microsoft will bring up a improved version of XAML. This arcitle shows you the language enhancements they made.
Easy Object References with {x:Reference}
If you want to create an object reference today you need to do a databinding and declare the source with an ElementName. In XAML 2009 you can use the new{x:Reference} markup extension<!-- XAML 2006 --> <Label Target="{Binding ElementName=firstName}">FirstName</Label> <TextBox x:Name="firstName" /> <!-- XAML 2009 --> <Label Target="{x:Reference firstName}">FirstName</Label> <TextBox x:Name="firstName" />
Built-in Types
If you want to add objects of simple types like string or double to a resource dictionary today you need to map the needed clr-namespaces to an XML namespaces. In XAML 2009 we a lot of simple types that are included in the XAML language.<!-- XAML 2006 --> <sys:String xmlns:sys="clr-namespace:System;assembly=mscorlib >Test</sys:String> <!-- XAML 2009 --> <x:String>Test</x:String>
<x:Object/><x:Boolean/><x:Char/><x:String/><x:Decimal/><x:Single/><x:Double/><x:Int16/><x:Int32/><x:Int64/><x:TimeSpan/><x:Uri/><x:Byte/><x:Array/><x:List/><x:Dictionary/>
Generics in XAML with x:TypeArguments
If you want to use an ObservableCollection<Employee> in XAML you need to create a type that derives from ObservableCollection because you cannot declare it in XAML. With XAML 2009 you can use the x:TypeArguments attribute to define the type of a generic type.<!-- XAML 2006 --> class EmployeeCollection : ObservableCollection<Employee> { } <l:EmployeeCollection> <l:Employee FirstName="John" Name="Doe" /> <l:Employee FirstName="Tim" Name="Smith" /> </lEmployeeCollection> <!-- XAML 2009 --> <ObservableCollection x:TypeArguments="Employee"> <l:Employee FirstName="John" Name="Doe" /> <l:Employee FirstName="Tim" Name="Smith" /> </ObservableCollection />
Support for Arbitrary Dictionary Keys
In XAML 2006 all explicitx:Key value were threated as strings. In XAML 2009 you can define any type of key you like by writing the key in ElementSyntax.<!-- XAML 2006 --> <StreamGeometry x:Key="CheckGeometry">M 0 0 L 12 8 l 9 12 z</StreamGeometry> <!-- XAML 2009 --> <StreamGeometry>M 0 0 L 12 8 l 9 12 z <x:Key><x:Double>10.0</x:Double></x:Key> </StreamGeometry>
Use of Non-Default Constructors with x:Arguments
In XAML 2006 objects must have a public default constructor to use them. In XAML 2009 you can pass constructor arguments by using the x:Arguments syntax.<!-- XAML 2006 --> <DateTime>00:00:00.0000100</DateTime> <!-- XAML 2009 --> <DateTime> <x:Arguments> <x:Int64>100</x:Int64> </x:Arguments> </DateTime>
Use of Static Factory Methods with x:FactoryMethod
When you have a type that has no public constructor but a static factory method you had to create that type in code in XAML 2006. With XAML 2009 you can use the x:FactoryMethodx:Arguments attribute to pass the argument values.<!-- XAML 2006 --> Guid id = Guid.NewGuid(); <!-- XAML 2009 --> <Guid x:FactoryMethod="Guid.NewGuid" />
No comments:
Post a Comment