Почему это не работает (NavigationService на Singleton)? - PullRequest
0 голосов
/ 03 октября 2011
public class Navigator : PhoneApplicationPage
{
    private static Navigator _instance;
    private static object _lock = new object();

    public static Navigator Instance
    {
        get
        {
            lock (_lock)
            {
                if (_instance == null)
                {
                    _instance = new Navigator();
                }
                return _instance;
            }
        }
        private set
        {
            lock (_lock)
            {
                _instance = value;
            }
        }
    }

    private Navigator(){}

    public bool NavigateTo(string uri)
    {
        lock (_lock)
        {
            return NavigationService.Navigate(new Uri(uri, UriKind.Relative));
        }
    }
}

Вызывается в классе ViewModel:

 Navigator.Instance.NavigateTo("/NotePage.xaml");

Итак, я получил это, и NavigationService.Navigate (..) генерирует исключение NullReferenceException.

Как я могу это исправить / что является альтернативой? Я хочу использовать NavigationService из класса ViewModel.

Я бы предпочел решение без необходимости установки большего количества компонентов (MVVM light). Если это абсолютно невозможно, я проверю класс Messenger / Message.

EDIT Я почти сдался. Я решил свою проблему, создав стиль для кнопки с гиперссылкой, которая может обтекать все вокруг

1 Ответ

0 голосов
/ 03 октября 2011

ваш синглтон не безопасен для потоков.посмотрите на эту реализацию:

http://www.yoda.arachsys.com/csharp/singleton.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...