2011-07-29 13 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

まず、そのようなボタンのコンテンツのソースを変更することはできません。ボタンのテンプレートと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> 
+0

ありがとうございました。これらのツールを詳細に理解したいのであれば、どこから始めるべきですか? – Ameen

+0

MSDN?これは*基本* XAMLのものです。紹介のチュートリアルで何かが教えてくれるもの。私はXAMLに関する本を買うべきだと思います。 –