У меня есть следующее требование для очень сложного пользовательского интерфейса. (Сложный здесь означает, что в форме много элементов управления [примерно 100]). Я использую MVVM (если моя проблема требует, чтобы он немного отличался от MVVM, я согласен с этим)
Мой вопрос касается Editable ComboBox и < Strong>Текстовое поле. Но я хотел бы услышать общий алгоритм, который подойдет для всех элементов управления.
Требование 1: пользователь редактирует содержимое и переходит к следующему элементу управления, цвет элемента управления/текста должен стать красным.
Требование 2. Когда пользователь возвращается к ранее отредактированному элементу управления и вводит значение, которое было изначально, цвет элемента управления/текста должен снова стать черным.
Я знаю, что требование жесткое, и я сломал голову, чтобы разработать общий алгоритм, с помощью которого я могу сохранить предыдущее значение и вызвать функцию для изменения цвета элемента управления.
Чтобы дать вам общее представление,
--> я попытался сохранить 2 свойства для каждого TextBox, например Default_Text и Text. Но поскольку количество свойств огромно, объем памяти очень велик. Также очень сложно поддерживать такое количество свойств.
--> Я попытался добавить словарь в каждую ViewModel для хранения измененных значений. Но здесь проблема, с которой я столкнулся, заключалась в том, чтобы дать уникальные ключи всем элементам управления в моем приложении, что не очень полезно
--> Я даже думал и пытался создать подклассы элементов управления, таких как TextBox, ComboBox, и переопределить некоторые методы в соответствии с моими требованиями. , но, к сожалению, я с треском провалился, когда начал добавлять проверки и все такое.
Итак, здесь я застрял в разработке общей системы/алгоритма свойств WPF для обработки всех функций отмены и повтора, изменения стилей элементов управления и т. д. !!!
Будет очень здорово, если вы, эксперты, направите меня в правильном направлении, а также поможете мне в разработке такого алгоритма/системы. Однако примерная иллюстрация будет хороша!!!