2013-09-09 7 views
1

Я хочу сделать многоязычное приложение.Wpf. Проблемы с использованием культуры

Я делаю это (Связывание с 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 
      } 
     } 
    } 
} 

, но на линии А, возникает исключение:

NullReferenceException был необработанное кодом пользователя

Что может это быть?

ответ

1

Маловероятно, что исключение выбрасывается на указанную вами линию. Скорее всего, он бросается на if, потому что _culture - null.

Вам необходимо либо запретить установление культуры в 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 
       } 
      } 
     } 
    } 

Или вы можете только изменить культуру пользовательского интерфейса, если культура была установлена:

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

_culture является не ноль. я проверил его – Zhenia

+0

i что-то не так с CultureManager.UICulture – Zhenia

+0

Хорошо, тогда покажите нам код из 'CultureManager.UICulture'. –