模板按钮的背景

时间:2011-07-29 10:47:31

标签: xaml windows-phone

我有一个自定义按钮,如下所示,我想更改处于按下状态的文本颜色和图像源。

<Button Background="#FFC17C7C" Style="{StaticResource CustomButton}">
    <StackPanel HorizontalAlignment="Center" 
                VerticalAlignment="Center" Orientation="Horizontal">
        <TextBlock VerticalAlignment="Center" Text="hello" />
        <Image Source="Background.png" />
    </StackPanel>
</Button>

如果你能提供一个简单的例子或有用的链接来解决这类问题,我会很感激。

1 个答案:

答案 0 :(得分:0)

首先,您不能像这样更改Button内容的来源。您必须重新定义Button的模板,并将图像命名为PART_Image,以便您可以从VisualState访问它。

现在,如果您希望能够直接在XAML中而不是在模板中指定两个背景,则需要从Button实现自定义UserControl。

但是如果你不这样做,你可以简单地使用ImageBrush来绘制背景。

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
    <DiscreteObjectKeyFrame KeyTime="0">
        <DiscreteObjectKeyFrame.Value>
            <ImageBrush ImageSource="Pressed.png" />
        </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>

然后,同样,如果您还想要一个非按下状态的图像,也可以更改按钮定义。

<Button Style="{StaticResource CustomButton}">
    <Button.Background>
        <ImageBrush ImageSource="NotPressed.png" />
    </Button.Background>
    <Button.Content>
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
            <TextBlock VerticalAlignment="Center" Text="hello" />
        </StackPanel>
    </Button.Content>
</Button>