2011-06-28 3 views
1

Je dois avoir un style de bouton qui présentera 3 textes différents des piqûres liées. Maintenant, je peux facilement passer une chaîne de texte à Content Presenter où Content = "{TemplateBinding Content}". Je dois être en mesure de passer 3 chaînes de la même manière que 3 soit texblock dans le style de bouton ou utiliser plusieurs présentateurs de contenu. Je me demande comment je peux faire ça. Des idées sont très appréciées?Style de bouton pouvant présenter plusieurs chaînes de texte?

Répondre

2

Vous pouvez utiliser un DataTemplate personnalisé:

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

Vous pouvez permuter ou modifier la mise en page en modifiant le StackPanel.

Si elle doit être un style, vous pouvez utiliser:

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

Et vous alors besoin de définir une classe personnalisée pour passer les trois valeurs comme ceci:

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

Et puis l'utiliser comme suit:

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

Où local fait référence à l'espace de noms de MyClass.

+0

Merci pour l'excellente information. J'ai seulement du mal à utiliser la deuxième approche où vous ad datatemplate dans le style. Je ne peux pas faire ça de mon côté. Je me demande si vous pouvez fournir un échantillon plus complet. Je pense que je dois utiliser cette approche. Merci encore. J'apprécie grandement votre aide. – vladc77

+0

@ vladc77 - Désolé, il me manquait le TargetType du style. – CodeNaked

+0

J'ai déjà utilisé. Cela n'a pas fonctionné. Dois-je avoir le modèle de données dans Control Resources? Merci. – vladc77