会员" CurrentCulture"无法识别或无法访问

时间:2014-12-15 04:56:07

标签: xaml localization

我有一个带有以下命名空间的窗口

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但标记还没有?

干杯 杰夫

3 个答案:

答案 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 suggestionWPF 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 ...