Patrick Skelton Ответов: 0

Как я могу заставить механизм привязки WPF немедленно обнаруживать изменения?


У меня есть то, что я бы назвал довольно "нормальным" приложением MVVM WPF. У меня есть представление, которое использует привязку данных к куче свойств в модели представления. Свойства в модели представления следуют обычному шаблону:

public string Name
{
    get
    {
        return _name;
    }
    set
    {
        SetProperty( ref _name, value );
        // The unsaved-changes flag gets set in here.
    }
}


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

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

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

1. попросите механизм привязки данных вызвать набор код каждый раз, когда клавиша нажимается внутри текстовый;

2. попросите механизм привязки данных вызвать набор код до мой обработчик событий закрытия окна;

3. найдите другое событие закрытия окна, которое происходит после механизм привязки данных вызвал набор код.

Технология WPF настолько широко используется, что я не могу не думать, что просто делаю что-то не так, потому что текущее ощущение конечного пользователя просто убого.

Любые предложения будут с благодарностью приняты.

Что я уже пробовал:

Я мог бы справиться с этим. Клавиша вниз или Клавиша вверх событие в каждом отдельном случае текстовый и используйте это, чтобы установить флаг несохраненных изменений, но это кажется немного неуклюжим. (На самом деле, я думаю, что это было бы довольно близко к варианту № 1 выше.)

[no name]

http://www.wpf-tutorial.com/data-binding/the-update-source-trigger-property/

Patrick Skelton

Ой! Почему я об этом не знал? (Пожалуйста, не отвечайте.) Огромное спасибо. Экран теперь работает отлично!

0 Ответов