Триггер TextBlock вместо использования конвертера - PullRequest
5 голосов
/ 14 июня 2011

Я хочу показать номер на экране. Если это число равно 0, я вообще не хочу его показывать.

<TextBlock Text="{Binding Path=Class.Count}" FontSize="20" FontWeight="Bold">
    <TextBlock.Triggers>
        <DataTrigger Binding="{Binding Path=Class.Count}" Value="0">
            <Setter Property="TextBlock.Text" Value=""/>
        </DataTrigger>
    </TextBlock.Triggers>
</TextBlock>

Я попытался выполнить приведенный выше фрагмент кода после того, как обычный триггер не смог решить мою проблему. Я не хочу писать конвертер, чтобы действовать на один конкретный номер. Есть ли способ создать триггер, который будет скрывать число, если оно равно 0?

РЕДАКТИРОВАТЬ: Когда я пытаюсь использовать обычный триггер или триггер данных, я получаю ошибку разбора xaml, говорящую мне, что мне нужно использовать триггер события.

Я попытался установить значение в установщике на число, чтобы убедиться, что наличие пустого значения не вызывает проблемы

1 Ответ

8 голосов
/ 14 июня 2011

Вы боретесь с привязкой, чтобы установить свойство текста.

Я бы сделал элемент управления свернутым / скрытым вместо того, чтобы устанавливать текст в String.Empty.

Меньше путаницы.

EDIT

<TextBox>
    <TextBox.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Name.Length}" Value="0">
                    <Setter Property="UIElement.Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

OR

<TextBox>
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Name.Length}" Value="0">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>
  1. Только DataTriggers допускает только стиль.
  2. Парсер xaml хочет проверить существование свойства, поэтому ему нужен тип владельца. Видимость объявлена ​​в классе UIElement. Есть два способа указать это, как я показал в обоих примерах.
...