2009-06-18 6 views
1

J'ai une fenêtre personnalisée qui possède deux propriétés de dépendance: Boolean? ValidationStatus et chaîne ValidationMessage. La liaison de ces propriétés fonctionne correctement, mais le déclenchement ne semble pas déclenché lorsque ces valeurs changent. Qu'est-ce que je fais mal?Impossible de mettre à jour la propriété de zone de texte à l'aide de DataBinding

<TextBlock x:Name="validationTextBox" 
    Grid.Row="1" 
    Grid.ColumnSpan="2" 
    Text="{Binding ElementName=_this, Path=ValidationMessage}" 
    TextAlignment="Center" 
    Background="Green"> 

    <TextBlock.Style> 
     <Style> 
     <Style.Triggers> 
      <DataTrigger Value="False" Binding="{Binding ElementName=_this, Path=ValidationStatus}"> 
      <Setter Property="Panel.Background" Value="Red"/> 
      <Setter Property="TextBox.Text" Value="Outer checkbox is not checked"/> 
      </DataTrigger> 
     </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 

</TextBlock> 

Répondre

1

Les paramètres de style ne remplacent pas les paramètres d'attribut locaux. Par conséquent, les valeurs du déclencheur de données sont ignorées car vous avez spécifié les propriétés Text et Background sur le TextBlock. Pour résoudre le problème de définir les valeurs par défaut de ces propriétés dans le style comme indiqué dans le code suivant:

<TextBlock x:Name="validationTextBox" 
      Grid.Row="1" 
      Grid.ColumnSpan="2" 
      TextAlignment="Center"> 

<TextBlock.Style> 
    <Style> 
    <Setter Property="TextBox.Text" Value="{Binding ElementName=_this, Path=ValidationMessage}"/> 
    <Setter Property="TextBox.Background" Value="Green"/> 
    <Style.Triggers> 
     <DataTrigger Value="False" Binding="{Binding ElementName=_this, Path=ValidationStatus}"> 
     <Setter Property="TextBox.Background" Value="Red"/> 
     <Setter Property="TextBox.Text" Value="Outer checkbox is not checked"/> 
     </DataTrigger> 
    </Style.Triggers> 
    </Style> 
</TextBlock.Style> 

+0

Merci, vous avez raison au point, bien que je trouve une des choses en vous par exemple ne fonctionne pas , l'arrière-plan n'a pas été mis à jour. Pour que cela fonctionne, j'ai dû remplacer "Panel.Background" par "TextBlock.Background". –

Questions connexes