Question

J'ai une fenêtre personnalisée qui a deux propriétés de dépendance: Boolean? ValidationStatus et chaîne ValidationMessage. La liaison de ces propriétés fonctionne bien, mais le déclencheur ne semble pas être déclenché lorsque ces valeurs changent. Qu'est-ce que je fais mal?

<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>
Était-ce utile?

La solution

Les sélecteurs 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 TextBlock. Pour résoudre le problème, définissez 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>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top