2011-06-28 15 views
1

私はバインドされた刺し傷の3つの異なるテキストを表示するボタンスタイルを持つ必要があります。これで、Content PresenterにContent = "{TemplateBinding Content}"のテキスト文字列を簡単に渡すことができます。 3つの文字列を同様の方法でボタンスタイル内の3つのテクスチャブロックに渡すか、複数のコンテンツプレゼンターを使用できるようにする必要があります。私はこれをどうやってできるのだろうと思っています。どんなアイディアも高く評価されていますか?複数のテキスト文字列を表示できるボタンスタイル?

<Button> 
    <Button.ContentTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="1" /> 
       <TextBlock Text="2" /> 
       <TextBlock Text="3" /> 
      </StackPanel> 
     </DataTemplate> 
    </Button.ContentTemplate> 
</Button> 

あなたはスワップアウトかのStackPanelを変更することによって、レイアウトを変更することができます。

答えて

2

は、カスタムのDataTemplateを使用することができます。

それがスタイルにする必要がある場合は、あなたが使用できます。

<Style TargetType="Button"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock Text="{Binding One}" /> 
        <TextBlock Text="{Binding Two}" /> 
        <TextBlock Text="{Binding Three}" /> 
       </StackPanel> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

そして、あなたがそうのような三つの値渡しするカスタムクラスを定義する必要があるだろう:

public class MyClass { 
    public string One { get; set; } 
    public string Two { get; set; } 
    public string Three { get; set; } 
} 

をと次のように使用します。

<Button> 
    <local:MyClass One="1" Two="2" Three="3" /> 
</Button> 

ここで、localはMyClassの名前空間を表します。

+0

偉大な情報ありがとうございます。私は、あなたがスタイルに広告データを書いたところで2番目のアプローチを使うのは難しいだけです。私は私の終わりにそれをすることはできません。より完全なサンプルを提供できるかどうか疑問に思っています。私はこのアプローチを使う必要があると思う。ありがとうございました。私はあなたの助けを高く評価します。 – vladc77

+0

@ vladc77 - 申し訳ありませんが、スタイルからTargetTypeが不足していました。 – CodeNaked

+0

私は以前に使った。うまく行かなかった。コントロールテンプレート内にデータテンプレートを置く必要がありますか?ありがとう。 – vladc77

関連する問題