2010-05-31 17 views
3

J'ai le code suivant à mon avis:Changement TextBlock.Text dans déclencheur ne fonctionne pas

<Style x:Key="documentFileNameStyle"> 
    <Setter Property="TextBlock.Foreground" Value="Gray"/> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=Untitled}" Value="True"> 
      <Setter Property="TextBlock.FontStyle" Value="Italic"/> 
      <Setter Property="TextBlock.Text" Value="no file name"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

<DataTemplate x:Key="documentTemplate">    
    <TextBlock Text="{Binding Path=FileName}" Style="{StaticResource documentFileNameStyle}"/>         
</DataTemplate> 

Mais la mise TextBlock.Text à une chaîne ne fonctionne pas. TextBlock.FontStyle passe à l'italique, donc le déclencheur entier fonctionne correctement. Qu'est-ce qui ne va pas?

Répondre

9

L'affectation locale des propriétés est plus prioritaire que la définition des valeurs dans les déclencheurs.

Vous utilisez également Binding (Path = FileName) pour définir la propriété Text du TextBlock. Changer le texte dans les déclencheurs n'affecte donc pas la propriété.

Comme vous utilisez la liaison. Je voudrais changer la propriété "FileName" pour retourner "aucun nom de fichier" si la propriété "Untitled" est "true".

+0

Merci, en définissant Text = "{Binding Path = FileName}" dans le style au lieu d'un problème fixe d'affectation locale. – Seldon