Textblock DataTriggers не срабатывает

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

Мой XAML выглядит так:

<Grid Height="227">
    <TextBlock Margin="114,60,112,150" Name="textBlock1" Text="{Binding Path=DispVal}" Width="42" Grid.Column="1" HorizontalAlignment="Center" TextAlignment="Center" FontWeight="Bold">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}"> 
                <Setter Property="Foreground" Value="Black"/>

                <Style.Triggers> 
                    <DataTrigger Binding="{Binding Path=IsChanged}" Value="true"> 
                        <Setter Property="TextBlock.Foreground" Value="Red" /> 
                    </DataTrigger> 
                    <DataTrigger Binding="{Binding Path=IsChanged}" Value="false"> 
                        <Setter Property="TextBlock.Foreground" Value="Black" /> 
                    </DataTrigger> 
                </Style.Triggers> 
            </Style> 
        </TextBlock.Style>            
    </TextBlock> 
</Grid>

Я связал TextBlock с помощью DataContext:

texBlock1.DataContext = m_slider;

Я обновляю объект m_slider, когда срабатывает обработчик обновления моего ползунка.

Однако я не получаю никаких изменений текста или цвета.


person Tony    schedule 17.01.2013    source источник
comment
Вы запускаете события PropertyChanged при изменении значения IsChanged? Также я не уверен, что это действительно имеет значение, но вам, вероятно, следует использовать заглавные буквы True и False, чтобы убедиться, что вы соответствуете логическому значению.   -  person Kevin DiTraglia    schedule 17.01.2013
comment
Какой именно тип m_slider ?   -  person Henk Holterman    schedule 17.01.2013
comment
Предоставьте код DataContext, чтобы мы могли понять, что не так.   -  person HichemSeeSharp    schedule 17.01.2013
comment
@Esoteric псевдоним: Почему ты украл мои правки?   -  person Anatoliy Nikolaev    schedule 17.07.2013
comment
@AnatoliyNikolaev Ваше редактирование было неверным. Я просмотрел его и исправил ошибки, поэтому редактирование назначается мне, а не вам.   -  person Esoteric Screen Name    schedule 17.07.2013
comment
@Esoteric Screen Name: повторяется 5 или 6 раз. Так много исправлений ошибок, которые только вы делаете. Вы только форматирование убрали, теги оставили. Так форматируется 90 процентов людей.   -  person Anatoliy Nikolaev    schedule 17.07.2013


Ответы (1)


вы можете заменить текстовый блок текстовым полем и сделать его похожим на внешний вид, применив следующие свойства

<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>

Затем вы можете использовать событие TextChanged, чтобы обновлять его стиль каждый раз, когда текст изменяется вашей привязкой.

person iltzortz    schedule 17.01.2013