Типичный способ сделать это в WPF - использовать шаблон Model-View-ViewModel. Подробнее об этом здесь
По сути, вы должны создать класс (ViewModel), который будет уведомлять вашу кнопку (представление), что она должна изменить свое содержимое при изменении UserLoggedIn (модель). Этот класс должен реализовывать INotifyPropertyChanged
и запускать событие PropertyChanged при изменении значения UserLoggedIn, соответственно изменяя пользовательский интерфейс. Таким образом, вы почти никогда не должны ссылаться на свою кнопку (btnLogin) из кода, вместо этого кнопка должна быть привязана к переменной в вашем объекте ViewModel из XAML и получать уведомления при ее изменении.
Прелесть использования этого шаблона в том, что вы будете использовать декларативный подход для большей части логики, используя привязку данных и триггеры, и что логика пользовательского интерфейса будет отделена от вашей бизнес-логики. Если вы новичок в WPF, я предлагаю вам сначала прочитать о шаблоне MVVM, так как это сэкономит вам много времени в долгосрочной перспективе.
Логика, которую вы показываете там, выполняет ту же задачу, что и триггер, но вы, вероятно, смешиваете бизнес-код с кодом пользовательского интерфейса (т. Е. У вас есть класс, который управляет как логином , так и , который знает, какая картинка чтобы показать, когда пользователь вошел в систему).
Однако, если вы хотите придерживаться своего дизайна. Я предполагаю, что проблема в том, что вы выполняете этот код только один раз («У меня есть этот кусок кода, когда окно загружено»), и вы должны запустить CheckLoginButton, когда пользователь входит в систему, или, точнее, при изменении значения UserLoggedIn истинно или ложно.