esでラップされたすべてのアイテムを取りItemsSource
、表示するコントロールを作成しようとしています。InnerTemplate
CheckBox
コントロールには 2 つの依存関係プロパティがあります。
public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(CheckBoxWrapperList), null);
public static readonly DependencyProperty InnerTemplateProperty = DependencyProperty.Register("InnerTemplate", typeof(DataTemplate), typeof(CheckBoxWrapperList), null);
テンプレートは次のとおりです。
<ControlTemplate TargetType="local:CheckBoxWrapperList">
<Grid>
<Grid.Resources>
<DataTemplate x:Key="wrapper">
<CheckBox>
<ContentPresenter ContentTemplate="{TemplateBinding InnerTemplate}" Content="{Binding}" />
</CheckBox>
</DataTemplate>
</Grid.Resources>
<ItemsControl ItemTemplate="{StaticResource wrapper}" ItemsSource="{TemplateBinding ItemsSource}" />
</Grid>
</ControlTemplate>
ただし、このアプローチは機能しません。使用
中のバインディングは機能しません。
ただし、テンプレート バインディングを使用せず、テンプレートを静的リソースとして参照すると、期待どおりに機能します。ControlPresenter.ContentTemplate
TemplateBinding
- datatemplate のコンテンツ プレゼンター内でテンプレート バインディングを使用できないのはなぜですか?
- ここで何が欠けていますか?特別なマークアップが必要ですか?
- 期待される動作を実現する方法はありますか?
前もって感謝します。