カスタムコントロールスタイルでのDataTemplateSelectorの適用
-
29-10-2019 - |
質問
ListBoxから派生したカスタムコントロールを開発しています。コントロールの一部として、デフォルトのItemTemplateSelectorを提供したいと思います。残念ながら、DataTemplateSelectorを見つけるためにそれを取得することはできません。関係のない詳細が省略されたコードは次のとおりです。 ジェネラコディセタグプレ
そしてXaml ... ジェネラコディセタグプレ
セレクター: ジェネラコディセタグプレ
スタイル: ジェネラコディセタグプレ
残念ながら、テンプレートが適用された後、ItemTemplateSelectorは常にnullになり、バインディングエラーは表示されません。
アイデア?
解決
ContentPresenterにバインディングが不足していました。私は今将来的に同じ間違いをするかもしれないと思われる希望の中で私の答えを今提供しています:
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Canvas.Left" Value="{Binding Path=X, Mode=TwoWay}" />
<Setter Property="Canvas.Top" Value="{Binding Path=Y, Mode=TwoWay}" />
<Setter Property="Padding" Value="0" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter x:Name="contentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="IsSelected" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</Setter.Value>
</Setter>
.
私はContentPresenterにContentTemplateseLectorバインディングがありませんでしたので、明らかに呼び出されませんでした。
所属していません StackOverflow