Пользовательский интерфейс WPF не обновляется, когда значение привязки изменяется дважды в рамках одного и того же вызовC#

Место общения программистов C#
Ответить
Anonymous
 Пользовательский интерфейс WPF не обновляется, когда значение привязки изменяется дважды в рамках одного и того же вызов

Сообщение Anonymous »

У меня есть экран WPF с двумя метками: занято и готово.
Когда я запускаю обновление в вызове метода (RunProcess), запускаемом кнопкой, я хочу изменить видимость в начале, чтобы показать занято и скройте метку готовности, а также покажите готовность + скройте занято в конце процесса, выполнение которого может занять несколько минут.
Я определил привязку в своем XAML Класс XAML INotifyPropertyChanged:

Код: Выделить всё

public class Status : INotifyPropertyChanged
{
public Status()
{
_readyVisibility = true;
_busyVisibility = false;
}

public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}

public Visibility ReadyVisibility
{
get { return _readyVisibility; }
set
{
_readyVisibility = value;
NotifyPropertyChanged("ReadyVisibility");
}
}
private Visibility _readyVisibility;

public Visibility BusyVisibility
{
get { return _busyVisibility; }
set
{
_busyVisibility= value;
NotifyPropertyChanged("BusyVisibility");
}
}
private Visibility _busyVisibility;
}
и мой экранный класс XAML:

Код: Выделить всё

public partial class MainWindow : UserControl
{
private ScreenStatusVisibility _screenStatusVisibility = new ScreenStatusVisibility();

public MainWindow()
{
InitializeComponent();
DataContext = _screenStatusVisibility;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
ReadyVisibility = false;
BusyVisibility = true;
//processing ..
ReadyVisibility = true;
BusyVisibility = false;
}
}
Когда я нажимаю кнопку, метка «Занят» никогда не скрывается, даже когда я пошагово перехожу в спящий режим или отладываю. Похоже, что WPF не обновляет пользовательский интерфейс за один вызов метода.

Подробнее здесь: https://stackoverflow.com/questions/789 ... the-same-m
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»