【问题标题】:Wpf. Problems using CultureWPF。使用文化的问题
【发布时间】:2013-09-09 07:25:56
【问题描述】:

我想做一个多语言的应用程序。

我这样做(从 UI 绑定):

private CultureInfo _culture;
public CultureInfo Culture
{
    get { return _culture; }
    set
    {
        if (_culture != value)
        {
            RaisePropertyChanging(() => Culture);
            _culture = value;
            RaisePropertyChanged(() => Culture);

            if (CultureManager.UICulture.Name != _culture.Name)
            {
                CultureManager.UICulture = _culture;  // line A
            }
        }
    }
}

但是在A行,出现异常:

NullReferenceException 未被用户代码处理

会是什么?

【问题讨论】:

    标签: c# wpf culture


    【解决方案1】:

    在您指定的行上不太可能引发异常。更有可能的是,它被扔到了if,因为_culturenull

    您需要通过添加保护子句来禁止将文化设置为 null

        private CultureInfo _culture;
        public CultureInfo Culture
        {
            get { return _culture; }
            set
            {
                if(value == null)
                    throw new ArgumentNullException("value");
                if (_culture != value)
                {
                    RaisePropertyChanging(() => Culture);
                    _culture = value;
                    RaisePropertyChanged(() => Culture);
    
                    if (CultureManager.UICulture.Name != _culture.Name)
                    {
                    CultureManager.UICulture = _culture;  // line A
                    }
                 }
            }
        }
    

    或者,如果设置了文化,您只能更改 UI 文化:

    if (_culture != null && CultureManager.UICulture.Name != _culture.Name)
    {
        CultureManager.UICulture = _culture;  // line A
    }
    

    【讨论】:

    • _culture 不为空。我查过了
    • 它来自 Infralution.Localization.Wpf
    • @Zhenia:在这种情况下,我猜你可能想把它交给 Infralution 支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2012-05-08
    • 1970-01-01
    • 2011-09-13
    • 2011-09-15
    • 2010-10-05
    • 2011-11-19
    相关资源
    最近更新 更多