J'ai un ItemsControl
personnalisé dans mon projet et j'essaye d'écrire un style pour cela qui combine une liste statique d'éléments avec une liste d'éléments sur une propriété de dépendance sur le contrôle lui-même .Étendue de la reliure - Styles et modèles
Voici le XAML correspondant dans ma ressource Dictionnaire:
<x:Array Type="{x:Type System:Object}" x:Key="Static_CloudItems">
<Button>One</Button>
<Button>Two</Button>
<Button>Three</Button>
</x:Array>
<Style TargetType="{x:Type ControlsBase:CloudControl}" x:Key="BasicCloudStyle">
<Setter Property="ItemsSource">
<Setter.Value>
<CompositeCollection>
<CollectionContainer Collection="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ControlsBase:CloudControl}}, Path=CloudItems}" />
<CollectionContainer Collection="{StaticResource Static_CloudItems}" />
</CompositeCollection>
</Setter.Value>
</Setter>
</Style>
Et puis le code correspondant dans mes commandes/windows/whatever:
<ControlsBase:CloudControl Style="{DynamicResource BasicCloudStyle}">
<ControlsBase:CloudControl.CloudItems>
<x:Array Type="{x:Type System:Object}">
<Button>Four</Button>
<Button>Five</Button>
</x:Array>
</ControlsBase:CloudControl.CloudItems>
</ControlsBase:CloudControl>
L'idée est que le style doit combiner les les éléments statiques avec tous les éléments définis dans l'édition par instance du contrôle. Mon problème est, la liaison ci-dessus ne fonctionne pas (et j'ai réalisé pourquoi aussi!) J'ai donc besoin d'un moyen de pouvoir lier au parent du style, mais puisque le setter n'est pas dans le visuel/arbre logique, juste une propriété, je suis un peu perplexe sur la façon de procéder.