Csharp/C#教程:Windows Phone 8使用格式绑定到字符串资源分享


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)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1304693.html

(0)
上一篇 2023年2月17日
下一篇 2023年2月17日

精彩推荐