当前位置: 首页 > 编程语言 > C#

如何在WPF UserControl中显示动态文化格式化的数字分享

时间:2023-04-10 11:04:18 C#

C#学习教程:如何在WPFUserControl中显示动态文化格式化数字数值。MyCulture和Number值将以“en-GB”、“en-US”等格式传递给MyCustomControl。我在asp.NETMVC中使用扩展方法做了类似的事情,但需要帮助如何拼接它一起在WPF中。MVC扩展方法示例publicstaticMvcHtmlStringCulturedAmount(thisdecimalvalue,stringformat,stringlocale){if(string.IsNullOrEmpty(locale))locale=HttpContext.Current.Request.UserLanguages[0];返回MvcHtmlString.Create(value.ToString(格式,CultureInfo.CreateSpecificCulture(locale)));}window//MyMoney是一个小数,MyCulture是一个字符串(例如“en-US”)MyCustomControl//用特定的文化显示这个如果我正确理解你的问题,你想将文化绑定到特定的TextBlock。您无法绑定绑定属性,因此绑定ConverterCulture将不起作用。FrameworkElement上有一个Language属性,可以这样设置但是,当尝试绑定此属性时,我得到一个奇怪的异常我可能会问自己这个异常的问题Thebindingoftheproperty'language'cannotbedonewith目标元素转换的语言;如果需要文化,则必须在绑定上明确指定ConverterCulture。根据ThomasLevesque的回答,这应该是可能的,所以也许我做错了什么..WPFxml:lang/languagebindings我所要做的就是使用一个额外的行为,当MyCulture更新时,它会更新语言。LanguageBehavior公共类LanguageBehavior{publicstaticDependencyPropertyLanguageProperty=DependencyProperty.RegisterAttached("Language",typeof(string),typeof(LanguageBehavior),newUIPropertyMetadata(LanguageBehavior.OnLanguageChanged));publicstaticvoidSetLanguage(FrameworkElementtarget,stringvalue){target.SetValue(LanguageBehavior.LanguageProperty,value);}publicstaticstringGetLanguage(FrameworkElementtarget){return(string)target.GetValue(LanguageBehavior.LanguageProperty);}privatestaticvoidOnLanguageChanged(DependencyObjecttarget,DependencyPropertyChangedEventArgse){FrameworkElementelement=targetasFrameworkElement;element.Language=XmlLanguage.GetLanguage(e.NewValue.ToString());看起来转换器就是答案。界面包含文化价值。Convert(objectvalue,TypetargetType,objectparameter,CultureInfoculture)但我找不到传递文化的语法。抱歉,这不是一个完整且经过测试的答案,但我的时间不多了。将区域性绑定到的URL。http://msdn.microsoft.com/en-us/library/system.windows.data.binding.converterculture.aspx传递aa参数的语法是:Converter={StaticResourcecolorConverter},ConverterParameter=GREEN}"你可能需要使用ConverterParameter将文化作为字符串传递。我同意Meleak的观点,即您不能将参数绑定到转换器。给他+1。但我认为您可以使用MultiBinding转换器来欺骗它。以上是C#学习教程:如何使用一个WPFUserControl以动态文化格式显示数字分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注。互联网,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载,请注明出处: