Xaml 模板化按钮的背景

Xaml 模板化按钮的背景,xaml,windows-phone,Xaml,Windows Phone,我有一个如下所示的自定义按钮,我想在按下状态下更改文本颜色和图像源 <Button Background="#FFC17C7C" Style="{StaticResource CustomButton}"> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal"> <TextBlo

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

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


如果您能为我提供一个简单的示例或有用的链接来解决此类问题,我将不胜感激。

首先,您不能更改这样一个按钮的内容来源。您必须重新定义按钮的模板,并将图像命名为类似PART_image的名称,以便可以从VisualState访问它

现在,如果您希望能够直接在XAML中而不是在模板中指定这两个背景,则需要在“插入自”按钮中实现自定义UserControl

但是如果你不这样做,你可以简单地用一个图像笔刷来绘制背景

<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>


这与您的上一个问题有何不同?有一点,他现在问的是如何做模板,而不是可视化状态如何工作。谢谢你,克劳斯。如果我想详细了解这些工具,我应该从哪里开始?MSDN?这是基本的XAML内容。每个入门教程都会教你一些东西。我想你应该买一本关于XAML的书。