我有一个包含Label的Usercontrol。我将Content-Property绑定到double,将ContentStringFormat-Property绑定到String。我用它来显示百分比值,但格式必须是可配置的。
以下是特定部分的XAML:
<Label Name="lbl_percent"
Content="{Binding ValuePercentage, ElementName=userControl}"
ContentStringFormat="{Binding ElementName=userControl, Path=FontFormat}"
Foreground="{Binding ElementName=userControl, Path=TextColor}"
HorizontalAlignment="Center" VerticalAlignment="Center"
RenderTransformOrigin="0.5,0.5" />
它按预期工作,但有一个特定的问题。逗号不是我所期望的。
如果我的系统包含&#39; de-de&#39;我希望它是:
expected shown
25,3 25.3
我该如何解决这个问题?我alredy尝试使用CurrentCulture添加covnerterCulture,但这显示错误(它仍然使用点而不是逗号):
Das Element&#34; CurrentCulture&#34; wurde nicht erkannt,oder es kann nicht auf das Element zugegriffen werden。
其翻译也是如此:
元素&#34; CurrentCulture&#34;未被识别,或无法访问该项目。
我该如何解决这个问题? StringFormat必须是可绑定的。
答案 0 :(得分:2)
FrameworkElement类有一个Language属性,可以绑定到XmlLanguage源属性:
<Label Name="lbl_percent"
Content="{Binding ValuePercentage, ElementName=userControl}"
ContentStringFormat="{Binding ElementName=userControl, Path=FontFormat}"
Foreground="{Binding ElementName=userControl, Path=TextColor}"
HorizontalAlignment="Center" VerticalAlignment="Center"
RenderTransformOrigin="0.5,0.5"
Language="{Binding TheLang, ElementName=userControl}" />
private readonly System.Windows.Markup.XmlLanguage _lang = System.Windows.Markup.XmlLanguage.GetLanguage("de-DE");
public System.Windows.Markup.XmlLanguage TheLang => _lang;
但是如果你想要它是动态的,你也可以在你的源对象中添加另一个属性,它返回一个已根据你的“FontFormat”和特定文化格式化的字符串,例如:
public string FormattedValuePercentage
{
get
{
return ValuePercentage.ToString(FontFormat, new System.Globalization.CultureInfo("de-DE"));
}
}
...并直接将Label的Content属性绑定到此属性:
<Label Name="lbl_percent"
Content="{Binding FormattedValuePercentage, ElementName=userControl}" />
答案 1 :(得分:1)
您可以将Label的Language
属性绑定到视图模型中XmlLanguage
类型的属性:
public class ViewModel
{
public XmlLanguage Language { get; set; } = XmlLanguage.GetLanguage("de");
...
}
XAML:
<Label ... Language="{Binding Language}" />