2011-07-29 82 views
0

我有一個自定義按鈕,如下所示,並且我想更改處於按下狀態的文本顏色和圖像源。模板化一個按鈕的背景

<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

這與您最後一個問題有什麼不同? http://stackoverflow.com/questions/6870091/windows-phone-7-button-states –

+0

有一點,他現在問如何做模板,而不是VisualStates如何工作。 –

回答

0

首先,你不能像這樣改變Button的內容來源。您必須重新定義Button的模板,並且圖像的名稱與PART_Image類似,因此您可以從VisualState訪問它。

現在,如果您希望能夠直接在XAML中指定兩個背景,而不是在模板中,則需要從Button實現一個自定義的UserControl inherting。

但是,如果你不這樣做,你可以簡單地使用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> 
+0

謝謝你克勞斯。如果我想詳細瞭解這些工具,我應該從哪裏開始? – Ameen

+0

MSDN?這是*基本* XAML的東西。每個介紹教程都會教你一些關於。我想你應該買一本關於XAML的書。 –