UWP - 将自定义转换器应用于x:Uid指令设置的值

时间:2017-06-24 17:17:57

标签: c# wpf xaml uwp

我的页面上有这个简单的 TextBlock

<TextBlock x:Uid="SettingsPage_StreamQualityTextBlock"
           Style="{StaticResource SectionTitleStyle}"/>

Text值由x:Uid指令从资源文件设置。

问题是我想将自定义转换器应用于Text TextBlockStaticResource的{​​{1}}值,但当我这样做的时候

Text="{Binding Converter={StaticResource TextToUpperCase}}"
未设置

值且未应用转换器。

因此我的问题是:

在没有对代码后面的代码进行编程修改的情况下,这在XAML中是否可行?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

监视Text的{​​{1}}属性更改的简单附加属性怎么样?

TextBlock

然后,您只需将其附加到需要大写的public static class Helper { public static bool GetUseUpperCase(DependencyObject obj) { return (bool)obj.GetValue(UseUpperCaseProperty); } public static void SetUseUpperCase(DependencyObject obj, bool value) { obj.SetValue(UseUpperCaseProperty, value); } public static readonly DependencyProperty UseUpperCaseProperty = DependencyProperty.RegisterAttached("UseUpperCase", typeof(bool), typeof(TextBlock), new PropertyMetadata(false, (sender, args) => { var textBlock = (TextBlock)sender; textBlock.RegisterPropertyChangedCallback(TextBlock.TextProperty, (s, e) => { textBlock.Text = textBlock.Text.ToUpper(); }); })); }

TextBlock

答案 1 :(得分:0)

您传递给此文本块的值的名称是什么,我猜测数据是在某种模型或类中。确定您尝试绑定的确切属性名称,并将其包含在TextBinding声明中,如这些

Text="{Binding [propertyName],Converter={StaticResource TextToUpperCase}}"

将框内括号中的属性名称替换为您要绑定的属性名称。请记住删除框括号。

希望这有帮助。