ControlTemplate
2 つのコレクションを取り込んで、それらを にバインドする 1 つのコレクションに結合したい があります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>
ただし、これは機能していないようで、バインド エラーが発生します。
System.Windows.Data エラー: 2: ターゲット要素の管理 FrameworkElement または FrameworkContentElement が見つかりません。
BindingExpression: パス = 範囲; DataItem=null; 対象要素は「電卓」(HashCode=33746798); ターゲット プロパティは 'Ranges' (タイプ 'Ranges')
です System.Windows.Data エラー: 2: ターゲット要素の管理 FrameworkElement または FrameworkContentElement が見つかりません。
BindingExpression:Path=データソース; DataItem=null; 対象要素は「電卓」(HashCode=33746798); ターゲット プロパティは 'DataSource' (タイプ 'IEnumerable') です。
この問題を回避する方法がわからないので、助けていただければ幸いです。