Windows Phone 8使用格式绑定到字符串资源
我的本地化资源字符串名为TextResource
,其值为: Text: {0}
。 其中{0}
是String.Format的占位符。
我的用户控件有一个名为Count
的DependecyProperty。
我想将Count
绑定到文本框的文本,但也应用本地化的字符串。 这样文本块的内容就是Text: 5
(假设Count
的值是5)
我设法弄清楚如何绑定本地化的字符串
或财产价值
但不是两个同时。
我怎么能在XAML中做到这一点?
PS:一种选择是添加两个文本块而不是一个,但我不确定这是否是一个好习惯。
你有三个选择。
第一个选项 :修改视图模型以显示格式化的字符串并绑定到该字符串。
public string CountFormatted { get { return String.Format(AppResources.TextResource, Count); } }
第二个选项 :制作转换器MyCountConverter
public class MyCountConverter: IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) return value; return String.Format(culture, AppResources.TextResource, value); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
...
第三个选项 :使用bind-able转换器参数,以便您可以创建一个通用的StringFormat转换器,您可以在其中实际绑定转换器参数。 Windows手机中不支持此function,但仍然可以使用。 查看此链接,了解如何完成此操作。
但是,除非您使用资源来支持多种语言,否则将格式作为普通字符串传递给转换器要容易得多。
在这种情况下,您必须创建一个使用参数的StringFormatConverter
转换器。
编辑:
关于第三个选项,您可以使用上面链接中的IMultiValueConverter
来实现您想要的效果。 您可以添加以下转换器:
public class StringFormatConverter: IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { var param = values[0].ToString(); var format = values[1].ToString(); return String.Format(culture, format, param); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
我不知道是否值得付出努力。
上述就是C#学习教程:Windows Phone 8使用格式绑定到字符串资源分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1304693.html