|
What's new in XAML of .NET 4.0
Easy Object References with {x:Reference}
Built-in Types
Generics in XAML with x:TypeArguments
Support for Arbitrary Dictionary Keys
Use of Non-Default Constructors with x:Arguments
Use of Static Factory Methods with x:FactoryMethod
With .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>
The following types are included into the XAML language:
<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 explicit x: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" />
Comments on this article
Show all comments
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
| Chatur | |
|
| Commented on 7.July 2010 |
| Blog likhnese kuch nahi hota he.. validation karna bhi ana chahiye... :)
|
|
|
 |
| Rajni Padhiyar | |
|
| Commented on 12.July 2010 |
I like these new features,
Thanks
Rajni Padhiyar
rajnicby.si@gmail.com
|
|
|
 |
| shreyas | |
|
| Commented on 28.July 2010 |
| Nice man.......
|
|
|
|
|
| Commented on 29.July 2010 |
|
|
|
|
 |
| Veni | |
|
| Commented on 3.August 2010 |
| Nice Ram.
|
|
|
 |
| bindu | |
|
| Commented on 5.August 2010 |
| hi very interesting features...but pls provide explanation with working examples apart from syntax..it will be more easy to understand for newbees like me...
|
|
|
 |
| Vimal | |
|
| Commented on 13.August 2010 |
Hi
That is very nice features
|
|
|
 |
| Vimal | |
|
| Commented on 13.August 2010 |
Hi
That is very nice features
|
|
|
 |
| this is nice... | |
|
| Commented on 14.August 2010 |
| explain with example
|
|
|
 |
| Mamta | |
|
| Commented on 18.August 2010 |
| This page is not detailed.
|
|
|
|