2017-08-25 8 views
-1

C#WPFでいくつかのボタンのスタイルを設定しようとしています。これらのボタンはすべて、異なるアイコンを表示する異なる背景画像を持つ必要があります。すべてのボタンに同じボタンスタイルを設定して、それぞれの固有のアイコンを指定することは可能ですか?これは私が使用していたスタイルです:同じスタイルを使用することができますが、背景が異なる

<Style TargetType="Button" x:Key="ButtonStyle"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="Button"> 
     <Grid> 
      <Ellipse Fill="SlateGray"/> 
      <Ellipse Margin="2"> 
      <Ellipse.Fill> 
       <ImageBrush ImageSource="..." Stretch="Fill"/> <!-- What should I write here? --> 
      </Ellipse.Fill> 
      </Ellipse> 
     </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

これは私がXAMLでボタンを作成する方法である:

<Button Style="{StaticResource ButtonStyle}"/> //How do I specify a unique image? 
<Button Style="{StaticResource ButtonStyle}"/> 

そこにそれを行うことが可能であるならば、私はまた、背後にあるコードからこれらのボタンを作成することができます。

どのように同じスタイルを使用しますが、イメージは異なりますか?

+0

ここにパラメータテンプレートの例があります:https://stackoverflow.com/questions/9232502/template-binding-with-attached-properties – ASh

+0

「ImageBrush」ボタン全体を指定しても、 'ImageSource'パスで' Button.Background'プロパティを 'TemplateBinding'と併用することができます – grek40

答えて

1

これを達成するにはいくつかの方法があります。

<Button Width="120" Height="30" Style="{StaticResource ButtonStyle}"> 
    <Button.Background> 
     <ImageBrush ImageSource="yourimage.jpg" Stretch="Fill" /> 
    </Button.Background> 
</Button> 

そしてTemplateBindingを使用するようにStyleを更新:

最もまっすぐ進むはImageBrushに、各ボタンのBackgroundを設定することです

<Style TargetType="Button" x:Key="ButtonStyle"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="Button"> 
     <Grid> 
      <Ellipse Fill="SlateGray"/> 
      <Ellipse Margin="2" Fill={TemplateBinding Background} /> 
     </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

代替を作成することができあなたの画像になるDependencyPropertyのカスタムボタン(例えばImageButton)。

+0

ありがとうございました – FewWords

0

EllipseFillButtonBackgroundのプロパティにバインドすることができます。次に、スタイルでBackgroundをデフォルトの 'ImageBrush'に設定します。 異なるイメージのボタンを使用する場合は、そのボタンの「背景」を別のイメージに設定します。 イメージだけでなく、その例外的なボタンに別の種類のブラシを使用することもできます。

関連する問題