Bonjour à tous,
voilà je viens de tomber sur un problème que je n'explique pas, dans un ResourceDictionnary j'ai un Template pour un CustomControl, dans ce Template je fais appel à une Resource:
1 2 3 4 5 6 7 8 9
| <local2:ButtonToolBar Header="{Binding Path=Text}" Command="{Binding}" >
<local2:ButtonToolBar.Template>
<ControlTemplate>
<Border ToolTip="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Header}" CornerRadius="{StaticResource CornerRadius1}" x:Name="border">
...
</Border>
</ControlTemplate>
</local2:ButtonToolBar.Template>
</local2:ButtonToolBar> |
Cette Resource est bien définie plus haut dans le dictionnaire:
<CornerRadius x:Key="CornerRadius1">6,6,6,6</CornerRadius>
Lorsque j'exécute, je n'ai pas d'erreur de compilation mais mon visuel n'est pas du tout comme il devrait être......
Pour vérifier j'ai remplacé l'appel à ma Resource par sa valeur et là, magie, cela fonctionne.....
Autre point semblable qui me donne des migraines, dans ce même dictionnaire de ressources, j'ai un autre CustomControl auquel j'essaye d'appliquer un style:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<Style x:Key="toto" TargetType="{x:Type local2:CustomToolBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local2:CustomToolBar}" >
<GroupBox Header="{TemplateBinding Header}" VerticalAlignment="Center" BorderThickness="0.75,0.75,0.75,0.75" FontFamily="Arial" FontSize="12" Foreground="#FF000000" Style="{DynamicResource GroupBoxStyle}" Background="{DynamicResource BrushDegrade}">
<GroupBox.BorderBrush>
<SolidColorBrush Color="Red"/>
</GroupBox.BorderBrush>
<StackPanel IsItemsHost="True" Width="Auto" Height="Auto" VerticalAlignment="Center" Orientation="Horizontal"/>
</GroupBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="GroupBoxStyle" TargetType="{x:Type GroupBox}">
<Setter Property="BorderBrush" Value="#FFAFAEAC"/>
<Setter Property="BorderThickness" Value="0.5,0.5,0.5,0.5"/>
</Style>
<local2:CustomToolBar Style="{StaticResource toto}" Header="{Binding Path=Text}" ItemsSource="{Binding}"/> |
Et cela ne marche que si, à la création de mon CustomControl, je n'ajoute pas cette ligne:
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomToolBar), new FrameworkPropertyMetadata(typeof(CustomToolBar)));
Pour les deux cas que j'expose il est tout à fait possible de passer outre ces problèmes mais le problème est le même avec les couleurs et comme mon appli doit permettre de changer de Skin et d'en ajouter de nouveaux, je suis obligé d'utiliser des ressources.
Si quelqu'un a une idée pour tout ça......
Partager