gpt4 book ai didi

wpf - TemplateBinding 不绑定(bind)到效果的属性?

转载 作者:行者123 更新时间:2023-12-04 14:20:42 25 4
gpt4 key购买 nike

想象一个名为 Testko 的控件,如下所示:

public class Testko: Control
{
public static readonly DependencyProperty TestValueProperty;

static Testko()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(Testko), new FrameworkPropertyMetadata(typeof(Testko)));
TestValueProperty = DependencyProperty.Register("TestValue", typeof(double), typeof(Testko), new UIPropertyMetadata((double)1));
}

public double TestValue
{
get { return (double)GetValue(TestValueProperty); }
set { SetValue(TestValueProperty, value); }
}
}

没什么特别的,只是一个空控件,它有一个 double 属性,默认值设置为 (double)1。
现在,想象一个像这样的通用风格:
<Style TargetType="{x:Type local:Testko}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Testko}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<StackPanel Orientation="Vertical">
<StackPanel.Effect>
<BlurEffect Radius="{TemplateBinding TestValue}" />
</StackPanel.Effect>
<Button Content="{TemplateBinding TestValue}" Margin="4" />
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

现在,问题是 Radius 属性由于某种原因永远不会被绑定(bind)。 Wheras Button 的内容已正确绑定(bind)到 TestValue 属性。
我确定我遗漏了一些明显的东西。或不?

最佳答案

如果很明显,那对我来说不是:-)

我最喜欢的书(WPF Unleashed)提到有时 TemplatedBinding 不起作用(但列举的原因与您的情况不符)。

但是 TemplatedBinding 是一个快捷方式:

{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TestValue}

我复制了您的案例,即更改 TestValue 仅对按钮有影响。
用这个替换 TemplatedBinding 后,我得到了想要的效果。

关于wpf - TemplateBinding 不绑定(bind)到效果的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2392426/

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