2009-06-18 10 views
1

私は2つのdepencencyプロパティを持つカスタムウィンドウを持っています。 ValidationStatus、および文字列ValidationMessageです。これらのプロパティのバインドはうまくいきますが、これらの値が変更されたときにトリガーがトリガーされないようです。私は間違って何をしていますか?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> 

答えて

1

スタイルセッターはローカル属性設定をオーバーライドしません。したがって、TextBlockにTextおよびBackgroundプロパティを指定しているため、データトリガーの値は無視されます。次のコードに示すようなスタイルで、これらのプロパティのデフォルト値を設定し、問題を解決するには:私は例に動作していないあなたの中に1の事を発見したものの

<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

おかげで、あなたは、ポイントに右にあります、背景は更新されませんでした。それを動作させるには、 "Panel.Background"を "TextBlock.Background"に変更しなければなりませんでした。 –

関連する問題