TargetType ="controlType"与TargetType ="{x:Type controlType}"之间的差异

Chr*_*col 24 .net wpf xaml targettype

在WPF中,您可以将其设置为TargetType类型的名称,也可以将其设置为{x:Type nameOfType}.

有谁知道有什么区别?

Ken*_*art 19

没有.由于属性类型是Type,XAML解析器知道尝试将您提供的任何内容转换为a Type.在其他情况下,属性类型可能不太具体(例如Object),这就是您需要标记扩展的位置,否则XAML解析器只会将您的值解释为String.


akj*_*shi 15

很抱歉找到这样一个老线程,但我觉得这是值得的.我最近遇到的情况这表明x:Type 是不同TypeName-as-String.

根据我的经验 -

x:Type考虑组件的强名称或版本,但不是TypeName-as-String.

我在这里的博客中解释了我的场景和其他细节 -

使用x指定AncestorType的重要性:在RelativeSourceBinding中输入

除此之外,WPF推断类型的方式也有所不同.对于使用,而对于使用.x:Type TypeExtensionTypeName-as-String FrameworkElementFactory

根据MSDN - x:类型标记扩展

键入支持Typename-as-String的属性

WPF支持的技术允许指定Type类型的某些属性的值,而无需使用x:Type标记扩展.相反,您可以将值指定为命名该类型的字符串.这方面的例子是ControlTemplate.TargetTypeStyle.TargetType.不通过类型转换器或标记扩展提供对此行为的支持.相反,这是通过实施的延迟行为FrameworkElementFactory.