Ho uno stile di controllo dei pulsanti e voglio cambiare il padding da qualunque versione legata ai dati debba essere regolata per un glifo che ha bisogno di un offset di 2 pixel. Userò SimpleButton da SimpleStyles.xaml come un esempio (... mostra dove il codice di attivazione è stato rimosso per concisione):Puoi fare "matematica" all'interno di Stili WPF legati ai dati
<Style x:Key="SimpleButton" TargetType="{x:Type Button}" BasedOn="{x:Null}">
<Setter Property="FocusVisualStyle" Value="{DynamicResource SimpleButtonFocusVisual}"/>
<Setter Property="Background" Value="{DynamicResource NormalBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource NormalBorderBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<!-- We use Grid as a root because it is easy to add more elements to customize the button -->
<Grid x:Name="Grid">
<Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/>
<!-- Content Presenter is where the text content etc is placed by the control. The bindings are useful so that the control can be parameterized without editing the template -->
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
</Grid>
...
</Setter.Value>
</Setter>
</Style>
Quello che voglio fare è aggiungere un po 'margine extra dove Imbottitura = "{TemplateBinding Imbottitura}". Qualcosa come Padding = "{TemplateBinding Padding} + 2,0,0,0".
Esiste una sintassi XAML? In caso contrario, c'è un approccio migliore quando si fa questo in codice (Decoratore?)?
Si può fornire un esempio di usando un convertitore di valori per fare questa matematica - sembra più un cattivo uso per me. –