문제

두 개의 변증성 속성이있는 맞춤형 창이 있습니다 : 부울? ValidationStatus 및 String validationMessage. 이러한 특성을 바인딩하는 것은 잘 작동하지만 이러한 값이 변경 될 때 트리거가 트리거되지 않는 것 같습니다. 내가 뭘 잘못하고 있죠?

<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>
도움이 되었습니까?

해결책

스타일 세터는 로컬 속성 설정을 무시하지 않습니다. 따라서 TextBlock의 텍스트 및 배경 속성을 지정했기 때문에 데이터 트리거의 값이 무시됩니다. 문제를 해결하려면 다음 코드와 같이 이러한 속성의 기본값을 스타일로 설정합니다.

<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>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top