Доброго времени суток.
В своих проектах использую конструкцию для доступа к MainWindow из других классов. И вот задался вопросом насколько это правильно и безопасно использовать. Если не безопасно, то если способы обезопасить?
Видел много аналогов этому, ни все они не такие простые и удобные.
public static MainWindow Instance;
public MainWindow()
{
InitializeComponent();
Instance = this;
}
MainWindow.Instance.List.ItemsSource = null;
Поскольку главное окно в приложении по определению одно, использовать синглтон для него нормально. Но делать это нужно правильно. Не используйте публичное поле (его можно случайно изменить в любом месте программы), вместо этого заверните его в get-only свойство:
static MainWindow _Instance = null;
public static MainWindow Instance
{
get { return this._Instance;}
}
Также необходимо сделать защиту от повторного создания объекта (если код написан в предположении, что существует только один объект, случайное повторное его создание может все сломать). Сделать конструктор закрытым скорее всего не получится, так как отвалится дизайнер форм, но можно проверять, что окно уже создано, и бросать исключение.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Метод show вызывается 2 разаОдин раз когда $message равен NULL и второй раз после того как через setMessage передан объект класса HelloMessage