samedi 9 mai 2015

Is it possible to provide 'arguments' to Custom control Styles & Templates?

I have 2 buttons, both of which are using a style to keep a consistent UI. However for 1 button, I would like to provide an image for, and the other just text.

I suppose I could create a new style, copy everything over, and the reformat it to my liking, but this seems like waste, is time consuming, and i think i would have to do it for each instance I wish to have a image on a button. I mean, that's fine, but I just want to know if there is an alternative that would make things more elegant.

I think I should somehow be able to push an 'arguement' or data to a style, either in or out of XAML to format the style, or something that would accomplish this (I'm sure the terminology is wrong).

Here is the Button Style:

<Style x:Key="Control_Button" TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Image> <!-- Optional Image here --> </Image>
                    <TextBlock Name="btn" Text="{TemplateBinding Content}" Padding="16" VerticalAlignment="Center">
                        <TextBlock.TextDecorations>
                            <TextDecoration Location="Underline" />
                        </TextBlock.TextDecorations>
                    </TextBlock>
                    <!-- FIX ME: not underlined normally -->

                </Grid>

                <ControlTemplate.Triggers>
                    <Trigger Property="TextBlock.IsMouseOver" Value="True">
                        <Setter TargetName="btn" Property="TextDecorations" Value="none" />
                        <!-- FIX ME: underlined on hover -->
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Aucun commentaire:

Enregistrer un commentaire