2009-07-06 13 views

Odpowiedz

19

Nic. Ponieważ typem właściwości jest Type, parser XAML wie, aby spróbować przekonwertować wszystko, co dostarczasz, na Type. W innych przypadkach typ właściwości może być mniej specyficzny (np. Object) i tam trzeba rozszerzyć znacznik, w przeciwnym razie analizator składni XAML po prostu interpretuje wartość jako String.

15

Przepraszamy za szturchanie tak starej nitki, ale czuję, że warto. Ostatnio napotkałem sytuację, która pokazuje, że x:Typejest inny od TypeName-as-String.

Z mojego doświadczenia -

x:Type uważa silną nazwę lub wersję zespołu, ale nie TypeName-as-String.

wyjaśniłem o moim scenariuszu i inne szczegóły na moim blogu tutaj -

Importance of specifying AncestorType with x:Type in RelativeSourceBinding

Oprócz tego, istnieje również różnica w jaki sposób WPF wnioskuje typ. Do użycia jest x:TypeTypeExtension, natomiast w przypadku TypeName-as-StringFrameworkElementFactory jest używany.

Zgodnie z MSDN - x:Type Markup Extension

Rodzaj własności, które wsparcie TypeName-as-String

WPF obsługuje techniki, które umożliwiają podanie wartości niektórych właściwości typu typ bez konieczności x:Type znaczników rozszerzenie użytkowania. Zamiast tego można podać wartość jako ciąg znaków o nazwie typu . Przykładami są ControlTemplate.TargetType i Style.TargetType. Obsługa tego zachowania nie jest zapewniana przez konwertery typów ani rozszerzenia znaczników. Zamiast tego jest to zachowanie polegające na odroczeniu za pośrednictwem FrameworkElementFactory.

Powiązane problemy