我的TextBlock绑定到我的viewmodel,并且我想在文本发生变化时刷新文本。我发现很难为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>
答案 0 :(得分:2)
如果您已经以mvvm方式执行此操作,那么如何监视TestTypeText
的属性更改,而不是依赖于事件来调用故事板?
这样做,您需要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
发生变化时调用故事板。