WPF重新评估样式触发器
我的应用程序支持英语和西班牙语的本地化。我有一个textlabel,它根据物业的使用年限应用不同的样式。 例如,如果本地化设置为英语: 如果年龄<18->文本=未满年龄[红色] 如果年龄>18->文本=超龄[绿色] 如果年龄=18->文本=18岁[蓝色] 这可以很好地使用此代码:WPF重新评估样式触发器,wpf,localization,setter,datatrigger,wpf-style,Wpf,Localization,Setter,Datatrigger,Wpf Style,我的应用程序支持英语和西班牙语的本地化。我有一个textlabel,它根据物业的使用年限应用不同的样式。 例如,如果本地化设置为英语: 如果年龄文本=未满年龄[红色] 如果年龄>18->文本=超龄[绿色] 如果年龄=18->文本=18岁[蓝色] 这可以很好地使用此代码: <TextBlock Margin="5,0,0,0"> <TextBlock.Style> <Style TargetType="{x:Type TextBlock}"&g
<TextBlock Margin="5,0,0,0">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Age,
Converter={StaticResource CuttoffConverter}, ConverterParameter=18}"
Value="False">
<Setter Property="Text" Value="{Loc strUnderAge}"/>
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Age,
Converter={StaticResource CuttoffConverter}, ConverterParameter=18}"
Value="True">
<Setter Property="Text" Value="{Loc strOverAge}"/>
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding Age}" Value="18">
<Setter Property="Text" Value="{Loc strOnEighteen}"/>
<Setter Property="Foreground" Value="Blue"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
本地化部分由{Loc XXXXXX}标记覆盖,除此之外工作正常:如果语言“在空中”更改,则不会重新评估此DataTrigger Setter属性,因此标签仍以英语显示。
有没有办法强制重新评估
更新:
我已经将我的本地化库更新为这个:它现在支持样式。
但是,现在它在编译上述XAML代码时崩溃了。错误显示:
“LocExtension对Setter.Value无效。只支持
MarkupExtension类型为DynamicResoruceExtension和BindingBase或
派生类型。”
是否有任何方法可以实现我使用trigger但使用LocExtension支持的任何方法的相同目的
strUnderAge
定义为实现INotifyPropertyChanged
接口的类中的属性strUnderAge
属性PropertyChanged
事件否则触发器无法知道语言已更改。是您的模型,其中
strUnderAge
属性实现了INotifyPropertyChanged
接口?strUnderAge不是属性。这是一个键,用于获取CodeProject thing声明的相应资源文件(取决于CultureInfo)中的值(我尚未验证声明),如果设置LocalizationManager.UICulture
,则Loc
将更新。这就是你为改变文化所做的吗?是的,EdPlunkett。这正是我所做的。嗨,谷歌粉丝,我不知道该怎么做,因为我使用的是第三方本地化解决方案,这里解释道:你带来的链接中的解决方案不适合Trigger,Trigger无法知道语言已经改变