TextBlock Текстовое свойство нельзя установить с помощью триггера стиля, если оно не пустое - почему? - PullRequest
5 голосов
/ 01 мая 2009

XAML ниже не работает (текст не меняется при наведении курсора):

<Window.Resources>
    <Style TargetType="TextBlock">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Text" Value="hover"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <TextBlock Text="original"/>
</Grid>

Но если атрибут Text отсутствует:

 <Grid>
    <TextBlock/>
</Grid>

Текст меняется при наведении мыши. Кто-нибудь знает теорию, стоящую за этим?

1 Ответ

6 голосов
/ 01 мая 2009

Это проблема приоритета DependencyProperty, когда вы фактически устанавливаете свойство как:

<TextBlock Text="original"/>

имеет приоритет над значением, установленным в триггере.

см

http://msdn.microsoft.com/en-us/library/ms743230.aspx

...