使用代码更改我的按钮的模板

时间:2014-06-25 08:40:28

标签: c# wpf xaml templates button

我想为我的按钮创建一个模板,我可以从代码中更改值。

这是我的模板:

<Button Name="button">
    <Button.Template>
        <ControlTemplate>
        <Border Name="bordure_bouton" >
            <Grid Name="GridPrincipale">

                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="30"/>
                </Grid.ColumnDefinitions>
                <Image Name="icone" Margin="5"  Source="icon.png" RenderOptions.BitmapScalingMode="Fant" Stretch="None" Grid.Column="1"/>
                <TextBlock Height="40" Name="label_text" FontSize="12" Text="texte" TextAlignment="Left" VerticalAlignment="Center" Grid.Column="0" Padding="12" Tag="2"/>

            </Grid>
            </Border>
        </ControlTemplate>
    </Button.Template>
</Button>

我希望能够通过我的代码更改文本和图像:

this.icon.Source = "icon2.png";
this.label_text.Text = "text";

我该怎么做?

1 个答案:

答案 0 :(得分:2)

将您的ControlTemplate更新为:

<Button Name="MyButton">
            <Button.Template>
                <ControlTemplate TargetType="Button">
                    <Border Name="bordure_bouton" >
                        <Grid Name="GridPrincipale">

                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="30"/>
                            </Grid.ColumnDefinitions>
                            <Image Name="icone" Margin="5"  Source= "{TemplateBinding Tag}" RenderOptions.BitmapScalingMode="Fant" Stretch="None" Grid.Column="0"/>
                            <TextBlock Height="40" Name="label_text" FontSize="12" Text="{TemplateBinding Content}" TextAlignment="Left" VerticalAlignment="Center" Grid.Column="1" Padding="12" Tag="2"/>

                        </Grid>
                    </Border>
                </ControlTemplate>
            </Button.Template>
        </Button>

然后,您可以将Button.ContentButton.Tag设置为包含您选择的图片和文字

        MyButton.Tag = new BitmapImage(new Uri(@"Icons/icon2.png", UriKind.Relative));
        MyButton.Content = "text";