Отслеживание изменений в отдельных полях - Silverlight - PullRequest
1 голос
/ 14 апреля 2010

У меня есть страница с несколькими текстовыми полями. Эти элементы управления привязаны к модели. Я использую MVVM.

Предположим, у меня есть три текстовых поля: FirstName, LastName и Company. Итак, в модели у меня есть три свойства для привязки. Теперь мне нужно отслеживать изменения, произошедшие с каждым полем. Если FirstName изменяется от исходного значения, мне нужно, чтобы текстовое поле было окрашено в другой цвет фона.

В настоящее время я создаю другое свойство с именем FirstNameChanged и привязываю фон к этому свойству. Это будет обновлено, когда я изменю FirstName. Для 3 полей это, кажется, хорошо. Но когда у меня будет больше полей, количество свойств будет слишком большим.

Есть ли лучший способ справиться с этим?

1 Ответ

0 голосов
/ 15 апреля 2010

Не совсем понятно, что вы подразумеваете под отслеживанием изменений.Если вы имеете в виду только то, что текстовые поля должны менять цвет при редактировании поля, то я так и решил бы.

Поскольку это функциональность, относящаяся к представлению, код должен находиться в коде позадипредставление и не должно быть в модели представления.

Поэтому я бы сделал следующее:

Создайте обработчик событий для изменения текста в текстовых полях:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    TextBox textbox = sender as TextBox;
    textbox.Background = new SolidColorBrush(Colors.Green);
}

изатем свяжите событие TextChanged всех текстовых полей с этим обработчиком события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...