Как мы обрабатываем простые установщики общедоступных свойств в шаблоне команд, чтобы сделать их отключаемыми? Нужно ли мне создавать отдельную команду для каждого свойства?
Подробности
Мое приложение (WPF / MVVM / C #) в настоящее время реализует функцию отмены / повтора, поддерживая стек «снимков состояния». Эти снимки создаются после каждого действия, которое невозможно отменить, и помещаются в стек. Хотя этот подход до сих пор работал правильно, размер стека отмены продолжает увеличиваться, что делает приложение менее отзывчивым.
Сейчас я рассматриваю перспективы перехода на стандартный Command Pattern. Поскольку я уже использую MVVM Light, я бы просто расширил RelayCommand
, чтобы создать UndoableRelayCommand
, а затем поместить их в свой стек отмены вместо снимков. Все идет нормально.
Однако проблема заключается в том, что многие объекты уровня виртуальной машины привязаны непосредственно к элементам управления пользовательского интерфейса (через стандартный WPF Binding
) и поэтому устанавливаются напрямую, без участия какого-либо RelayCommand
. Установка этих свойств должна быть отменяемым действием. Как мне вписать это требование в стандартный шаблон команд, сохранив при этом мои привязки нетронутыми?
Binding
. Стандартный командный шаблон не включает никаких условий для таких свойств (IIRC). - person dotNET   schedule 28.02.2018