Как изменить цвет текста TextBlock на Windows Phone 8.1 (WinRT)?

Мой TextBlock привязан к моей модели представления, и я хотел бы прошить текст при его изменении. Мне трудно реализовать это для Windows Phone 8.1 (WinRT). Я думаю, что я должен использовать EventTriggerBehavior и изменить textBlock на textBox, а затем выбрать событие "TextChanged". Есть простой способ сделать это?

Вот моя попытка сделать это с TextBox и использовать EventTriggerBehavior.

<TextBlock x:Name="TestTypeTextBox"
           TextWrapping="Wrap" 
           Text="{Binding TestTypeText}" 
           FontSize="48" TextAlignment="Center" 
           HorizontalAlignment="Center" 
           VerticalAlignment="Center" 
           Margin="0" 
           FontWeight="Bold" 
           FontFamily="Segoe UI Black"
           Foreground="White" 
           Padding="0">
    <i:Interaction.Behaviors>
        <core:EventTriggerBehavior EventName="SelectionChanged">
            <Media:ControlStoryboardAction Storyboard="{StaticResource FlashingText}"/>
        </core:EventTriggerBehavior>
    </i:Interaction.Behaviors>
</TextBlock>

1 ответ

Решение

Вместо того, чтобы полагаться на события для вызова раскадровки, как насчет мониторинга изменения свойств TestTypeText, учитывая, что вы уже делаете это в стиле mvvm?

Для этого вам понадобится DataTriggerBehavior а не EventTriggerBehavior,

<TextBlock x:Name="TestTypeTextBox"
           TextWrapping="Wrap" 
           Text="{Binding TestTypeText,FallbackValue=sss}" 
           FontSize="48" TextAlignment="Center" 
           HorizontalAlignment="Center" 
           VerticalAlignment="Center" 
           Margin="0" 
           FontWeight="Bold" 
           FontFamily="Segoe UI Black"
           Foreground="White" 
           Padding="0" RenderTransformOrigin="0.5,0.5">
    <TextBlock.RenderTransform>
        <CompositeTransform/>
    </TextBlock.RenderTransform>
    <Interactivity:Interaction.Behaviors>
        <Core:DataTriggerBehavior Binding="{Binding TestTypeText}" ComparisonCondition="NotEqual" Value="{Binding TestTypeText}">
            <Media:ControlStoryboardAction Storyboard="{StaticResource FlashingText}" />
        </Core:DataTriggerBehavior>
    </Interactivity:Interaction.Behaviors>
</TextBlock>

Приведенный выше код в значительной степени ваш, я только отредактировал поведение, поэтому он вызовет раскадровку, когда TestTypeText изменено

Другие вопросы по тегам