gpt4 book ai didi

c# - 在 ControlTemplate.Resources 中绑定(bind)到 TemplatedParent

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:24 27 4
gpt4 key购买 nike

我有一个 ControlTemplate,我想在其中接收两个集合并将它们组合成一个集合,然后将其绑定(bind)到一个 ItemsControl。计算完成通过 Calculator 对象,我在模板的 ResourceDictionary 中创建了一个实例。

<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:IndicatorBar}">
<ControlTemplate.Resources>
<local:Calculator
x:Key="_calculator"
Ranges="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Ranges}"
DataSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DataSource}" />
</ControlTemplate.Resources>

<ItemsControl ItemsSource="{Binding Ratios, Source={StaticResource _calculator}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="{Binding Range}">
<TextBlock Text="{Binding Ratio}" Foreground="White" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ControlTemplate>
</Setter.Value>
</Setter>

但是,这似乎不起作用并导致绑定(bind)错误:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element.
BindingExpression:Path=Ranges; DataItem=null; target element is 'Calculator' (HashCode=33746798); target property is 'Ranges' (type 'Ranges')
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element.
BindingExpression:Path=DataSource; DataItem=null; target element is 'Calculator' (HashCode=33746798); target property is 'DataSource' (type 'IEnumerable')

我不确定如何解决这个问题,所以非常感谢任何帮助!

最佳答案

首先,您的绑定(bind)使用RelativeSource.TemplatedParent 模式,因此绑定(bind)的源是您应用此模板的控件。我认为 TemplatedParent 不适合您的情况。请引用这个linkTemplatedParent 使用。您可以添加包含数据的模型以绑定(bind)到计算器控件吗?

关于c# - 在 ControlTemplate.Resources 中绑定(bind)到 TemplatedParent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502084/

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