Читайте также: |
|
В XAML добавилась возможность использовать стандартные типы.NET в разметке без указания лишних namespace, для чего это стало нужно видно в нижеописанных возможностях. Если раньше для описания в XAML объекта типа string приходилось писать:
<s:String xmlns:s="clr-namespace:System;assembly=mscorlib"> Foo </s:String>Теперь же
<x:String > Foo </s:String>Поддержка Generics
Этого давно не хватало, а именно с выпуска первого WPF. Как часто хотелось объявить в XAML ObservableCollection с типом вроде Person, а для этого нам приходилось создавать новый тип и наследовать его от коллекции, либо инкапсулировать ее:
class PersonCollection:ObservableCollection<Person>{}и уже этот новый класс объявлять в ресурсах:
<l:PersonCollection> <Person Name="Tom" /></l:PersonCollection>Теперь же этого можно избежать, теперь в XAML можно объявлять и инициализировать generics следующим образом:
<ObservableCollection
x:TypeArguments='local:Person'
xmlns='clr-namespace:System.Collections.ObjectModel;assembly=System' >
<local:Person Name='Tom' Age='21' />
</ObservableCollection>
FactoryMethod\Arguments
Еще одна возможность, которую хотели уже давно. Возможность использовать методы для инициализации объектов, а так же конструкторы, которые принимают параметры. Для того чтобы создать объект такого типа:
public class Person { public Person (string name, int age) { Name = name; Age = age; } public string Name {get;set;} public int Age {get;set;}}В XAML теперь можно написать
<local:Person> <x:Arguments> <x:String>Tom</x:String> <x:Int32>21</x:Int32> </x:Arguments> </local:Person>Более того для создания объекта теперь можно использовать FactoryMethod, самый простой пример – это Guid.NewGuid():
<p:Guid x:FactoryMethod='NewGuid'/>Или более сложный пример с передачей параметров:
<coll:List x:Key='list' x:TypeArguments='x:String'Named Object References
Тут все просто, такой биндинг:
<Label Target='{Binding ElementName=firstNameBox}' >_Target</Label><TextBox Name='firstNameBox'>Uses Binding</TextBox>Теперь можно записать при помощи x:Reference
<Label Target= '{x:Reference secondNameBox}'>_Second Target</Label>Или даже так:
<Label Target= 'thirdNameBox' >_Third Target</Label>Дата добавления: 2015-08-13; просмотров: 88 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Поддержка множества целевых платформ | | | Ключевые термины |