我的页面上有这个简单的 TextBlock :
<TextBlock x:Uid="SettingsPage_StreamQualityTextBlock"
Style="{StaticResource SectionTitleStyle}"/>
Text
值由x:Uid
指令从资源文件设置。
问题是我想将自定义转换器应用于Text
TextBlock
到StaticResource
的{{1}}值,但当我这样做的时候
Text="{Binding Converter={StaticResource TextToUpperCase}}"
未设置值且未应用转换器。
因此我的问题是:
在没有对代码后面的代码进行编程修改的情况下,这在XAML中是否可行?
提前感谢您的帮助!
答案 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}}"
将框内括号中的属性名称替换为您要绑定的属性名称。请记住删除框括号。
希望这有帮助。