gpt4 book ai didi

wpf - 什么是模板绑定(bind)与绑定(bind)?

转载 作者:行者123 更新时间:2023-12-03 04:39:40 28 4
gpt4 key购买 nike

我无法理解BorderThickness="{TemplateBinding BorderThickness}。代码如下:

<ControlTemplate TargetType="{x:Type wpftoolkit:DataGridCell}">
<Border Padding="{TemplateBinding Padding}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>

另请解释其他类型的绑定(bind)。

最佳答案

TemplateBinding 用于绑定(bind)到模板定义中的元素属性。在您的示例中,您可以编写:

 <Border Padding="{Binding Padding}" ...>

...意味着将边框的 padding 属性绑定(bind)到...的 padding 属性...什么? 您想说,“此模板所用于的控件的 padding 属性”。您无法给它命名,因为您此时不知道控件的 x:Name(即使您知道,它也无法工作,因为它位于不同的名称范围中)。但是,您可以通过定义相对源来做到这一点

<Border Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}" ...>

或者使用TemplateBinding,这是上面的快捷方式(*)

<Border Padding="{TemplateBinding Padding}" ...>
<小时/>

(*) 除了在这些模板方案中不太冗长之外,TemplateBinding 与常规绑定(bind)相比还有一些差异:

  • 它是在编译时评估的。 (例如,如果 Padding 属性不存在,您将收到编译错误。但如果您要使用与 TemplatedParent 的绑定(bind),则只会在运行时看到错误。)
  • 它始终是单向绑定(bind)。
  • 它要求源属性和目标属性都是依赖属性
  • 它的功能要少得多(没有 StringFormat、Delay、IsAsync 等。请参阅 BindingTemplateBindingExtention 的属性)。

关于wpf - 什么是模板绑定(bind)与绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597492/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com