Изменение TextBlock.Text в триггере не работает - PullRequest
3 голосов
/ 31 мая 2010

У меня есть следующий код на мой взгляд:

<Style x:Key="documentFileNameStyle">
    <Setter Property="TextBlock.Foreground" Value="Gray"/>
    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=Untitled}" Value="True">
            <Setter Property="TextBlock.FontStyle" Value="Italic"/>
            <Setter Property="TextBlock.Text" Value="no file name"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

<DataTemplate x:Key="documentTemplate">            
    <TextBlock Text="{Binding Path=FileName}" Style="{StaticResource documentFileNameStyle}"/>                                
</DataTemplate>

Но установка TextBlock.Text в строку не сработала. TextBlock.FontStyle изменяется на курсив, поэтому весь триггер работает правильно. Что не так?

1 Ответ

9 голосов
/ 31 мая 2010

Локальное присвоение свойств имеет более высокий приоритет, чем установка значений в триггерах.

Также вы используете Binding (Path = FileName), чтобы установить свойство Text для TextBlock. Таким образом, изменение текста в триггерах не влияет на свойство.

Как вы используете Binding. Я бы изменил Свойство «FileName», чтобы оно возвращало «без имени файла», если Свойство «Без названия» имеет значение «true».

...