2015-03-04 3 views
0

У меня есть TextBlock, и я хочу установить свойство Visibility на Collapsed, когда TextBlock не имеет текста. Интересно мне, потому что там должен быть лучший способ проверить, если Lenght свойства Text равно, чем 0.Лучшее связывание для DataTrigger

     <TextBlock Name="TextBlockHeader" Foreground="White" FontSize="18" FontWeight="Bold" Text="{Binding Header}" Margin="0,0,0,25"> 
         <TextBlock.Style> 
          <Style TargetType="TextBlock"> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding ElementName=TextBlockHeader, Path=Text.Length}" Value="0"> 
             <Setter Property="Visibility" Value="Collapsed"></Setter> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </TextBlock.Style> 
        </TextBlock> 

Здесь нужно определить имя TextBlock и я могу сослаться на него в DatatriggerBinding="{Binding ElementName=TextBlockHeader, Path=Text.Length}" Но как я могу достичь того же, не указывая имя для TextBlock?

ответ

1

Обычно вы использовали триггеры вместо DataTriggers и сравниваете свойство Text с null или пустой строкой.

<Style TargetType="TextBlock"> 
    <Style.Triggers> 
     <Trigger Property="Text" Value="{x:Null}"> 
      <Setter Property="Visibility" Value="Collapsed"/> 
     </Trigger> 
     <Trigger Property="Text" Value=""> 
      <Setter Property="Visibility" Value="Collapsed"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

Как класс TextBlock, кажется, принуждать значение свойства Text, чтобы быть ненулевым, может быть достаточно, чтобы иметь только второй триггер для пустой строки.

+0

Thanks Clemmens – MrScf

+1

@Clemens Я не думаю, что часть 'sys: String.Empty' необходима:' Value = "" 'должна работать так же хорошо и избегает необходимости в объявлении пространства имен. –

+0

@StevenRands Очень хорошая точка. Я отредактировал ответ. – Clemens

Смежные вопросы