在XAML中将转换器应用到静态属性

11

如何为静态属性设置转换器?以下示例显示了我的问题 - 我想将文本转换为大写。

<UserControl x:Class="CoRiMaCorporate.HomeScreen.Controls.Home.ConfigurationControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mainResources="clr-namespace:MainSharedResources;assembly=MainSharedResources"
             xmlns:converters="clr-namespace:CommonClientLibrary.Converters;assembly=CommonClientLibrary" />
<UserControl.Resource>
    <converters:StringToUpperCaseStringConverter x:Key="stringToUpperCaseStringConverter" />
</UserControl.Resource>
<Grid><TextBlock Text="{x:Static mainResources:Lang.Applications}" /></Grid>

我正在寻找类似于这样的东西:

<TextBlock Text="{Binding Converter=stringToUpperCaseStringConverter, ConverterParameter={x:Static mainResources:Lang.Applications}}" />

{Binding {x:Static mainResources:Lang.Applications}, Converter=stringToUpperCaseStringConverter} 这个怎么样? - Mike Eason
@MikeEason 很遗憾 - 期望类型是 'PropertyPath',实际类型是 'string'。 - David
1个回答

18

静态属性传递到绑定源,转换器由StaticResource提供

<TextBlock Text="{Binding Converter={StaticResource stringToUpperCaseStringConverter}, 
                          Source={x:Static mainResources:Lang.Applications}}" />

1
我在想这个在Xamarin中是否同样适用,并且可以从App.xaml使用StaticResource而不是x:Static。它确实可行! - lucidbrot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接