2011-08-10 2 views
0

J'ai un UserControl qui est un toggleButton modifié.
J'ai ajouté deux propriétés de chaîne pour que je puisse les modifier (ou les lier) dans blend, que je veux être le texte affiché lorsque le bouton est basculé. c'est-à-dire que lorsqu'elle est cochée, une chaîne est affichée, lorsqu'elle n'est pas cochée, l'autre.Liaison du contenu de contentPresenter dans UserControl?

La définition du texte est correcte, et basculer le contrôle UserControl est très bien, mais je ne sais pas comment définir le contenu du contentpresenter à partir d'une propriété de l'option toggle par un déclencheur. Voici un aperçu approximatif du code:

<UserControl 
    x:Name="UserControl" 
    <UserControl.Resources> 
     <Style x:Key="BiTextToggleButtonWithBorder" TargetType="{x:Type ToggleButton}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ToggleButton}"> 
         <Grid> 
          <Path x:Name="path" 
           Data="M28,0.5 L28.071953,0.50129622 28.092436,0.5 115.90756,0.5 C117.89162,0.50000113 119.5,2.5147196 119.5,5.0000013 L119.61492,36.460156 119.61432,36.857203 C117.1338,37.367692 108.82679,39.239366 106.37993,47.492391 L44.667,47.5 28.092436,47.5 4.9999995,47.5 C2.5147185,47.5 0.5,45.485283 0.5,43 L0.5,21 0.51801485,20.64324 0.5,20.0835 C0.5,9.2678322 12.812169,0.50000072 28,0.5 z" 
           Stretch="Fill" 
          <ContentPresenter 
           x:Name="contentPresenter" 
           Content="{Binding}"/> 
         </Grid> 

         <ControlTemplate.Triggers> 
          <Trigger Property="IsChecked" Value="True"> 
           <Setter Property="Content" TargetName="contentPresenter" Value="{Binding whatgoeshere!?}"/> 
          </Trigger> 
          <Trigger Property="IsChecked" Value="False"> 
           <Setter Property="Content" TargetName="contentPresenter" Value="whatgoeshere!?"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 

        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </UserControl.Resources> 

    <Grid x:Name="LayoutRoot"> 
     <ToggleButton 
      x:Name="ToggleButton" 
      Style="{DynamicResource BiTextToggleButtonWithBorder}" 
      FontSize="18.667" 
      Foreground="{DynamicResource WhiteText}"/> 
    </Grid> 
</UserControl> 

Je n'arrive même pas à trouver la propriété que je veux changer. J'ai déjà effectué des liaisons similaires à des objets dans un UserControl, mais rien dans un style et dans un controlpresenter.

Qu'est-ce qui me manque?

+0

Où sont vos cordes? S'agit-il de propriétés de dépendance personnalisées sur UserControl? Une ressource? Dans le DataContext quelque part? – Rachel

+0

Correct - ils sont des propriétés de dépendance sur le contrôle – DefenestrationDay

Répondre

0

Avez-vous essayé de remplacer le {Binding} par un {TemplateBinding}? (MSDN documentation here)

+0

Cela semble prometteur, mais je ne vois pas comment utiliser un TemplateBinding sur un contrôle personnalisé .. Cet article est grand, mais modifie une norme Button: http: // devlicio .us/blogs/christopher_bennage/archive/2008/07/04/TemplateBinding-un pont entre-styles-et-templates.aspx – DefenestrationDay

+0

dans votre modèle, remplacer "{} Reliure" avec "{TemplateBinding}" –

+0

.. le membre n'est pas reconnu ou n'est pas accessible. Sur un objet normal, il semble bien fonctionner, mais pas mon UserControl – DefenestrationDay

Questions connexes