我有一个带有以下命名空间的窗口
xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"
包含文本框
<TextBox Text="{Binding Path=Price, Mode=TwoWay, StringFormat='C',
ConverterCulture={x:Static sysglb:CultureInfo.CurrentCulture}}"
MaxLines="1" TextAlignment="Right"/>
根据Gusdor's回复StringFormat Localization issues in wpf这是正常工作但现在Visual Studio(2013)正在给我一个&#34;无效标记&#34; - 会员&#34; CurrentCulture&#34;无法识别或无法访问错误。
Intellisense识别并提示sysglb:CultureInfo.CurrentCulture但是一旦我离开文本框,我就会收到错误。
某种善意的灵魂可以告诉我为什么会这样,以及我该怎么做才能解决这个问题? 另外XAML编辑器如何设法识别sysglb:CultureInfo.CurrentCulture但标记还没有?
干杯 杰夫
答案 0 :(得分:8)
无法记住我从哪里得到这个但是有效
using System.Globalization;
using System.Windows.Data;
namespace SomeNamespace
{
/// <summary>
/// This class is a fudge because
///
/// xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"
///
/// <TextBox Grid.Row="2" Grid.Column="1"
/// Text="{Binding Path=SelectedSupporterCategory.Price, Mode=TwoWay, StringFormat='C',
/// ConverterCulture={x:Static sysglb:CultureInfo.CurrentCulture}}"
/// UseLayoutRounding="True" MaxWidth="100" HorizontalAlignment="Left" MinWidth="100" HorizontalContentAlignment="Right"/>
///
/// is giving
/// Error 29 "The member "CurrentCulture" is not recognized or is not accessible."
///
/// Instead we use
///
/// <TextBox Grid.Row="2" Grid.Column="1"
/// Text="{CultureAwareBinding Path=SelectedSupporterCategory.Price, Mode=TwoWay, StringFormat='C',}"
/// UseLayoutRounding="True" MaxWidth="100" HorizontalAlignment="Left" MinWidth="100" HorizontalContentAlignment="Right"/>
///
/// </summary>
public class CultureAwareBinding : Binding
{
public CultureAwareBinding()
{
ConverterCulture = CultureInfo.CurrentCulture;
}
}
}
答案 1 :(得分:4)
将项目目标框架更改为.NET Framework 4.6或更高版本可以解决问题。
转到解决方案资源管理器并右键单击受影响的项目 - &gt;属性 - &gt;申请 - &gt;目标框架。
答案 2 :(得分:2)
在此主题中找到similar suggestion:WPF StringFormat={0:C} showing as dollars
当我启动它并使用正确的文化格式显示值时,我的应用程序正在运行,但设计人员找不到CultureInfo.CurrentUICulture
并崩溃
我在helper类中使用了静态属性
public static class WpfHelpers
{
public static CultureInfo CurrentCulture { get; set; }
}
并在绑定中使用它:ConverterCulture={x:Static helpers:WpfHelpers.CurrentCulture}
我在Application startup
上设置了该属性WpfHelpers.CurrentCulture =
Thread.CurrentThread.CurrentCulture =
Thread.CurrentThread.CurrentUICulture = new CultureInfo ...