ВУЗ:
Составители:
Рубрика:
103
}
Такая реализация имеет два недостатка. Первый состоит в том, что
простой флаг isDirty больше не подходит, поскольку следить требуется за
двумя текстовыми полями. Эту проблему можно решить двумя способа-
ми:
воспользоваться для хранения флага isDirty свойством
TextBox.Tag — в таком случае при каждом вызове метода
CanExecuteSave() придется просто просматривать свойство Tag
отправителя;
создать для хранения значения isDirty закрытый словарь с индек-
сацией по ссылке элемента управления — в таком случае при вы-
зове метода CanExecuteSave() нужно будет просто отыскивать зна-
чение isDirty, принадлежащее отправителю.
Ниже показан код, необходимый для реализации второго варианта:
private Dictionary<Object, bool> isDirty = new Dictionary<Object, bool>();
private void txt_TextChanged(object sender, RoutedEventArgs e)
{
isDirty[sender] = true;
}
private void SaveCommand_CanExecute(object sender, CanExecuteRoutedEven-
tArgs e)
{
if (isDirty.ContainsKey(sender) && isDirty[sender] == true)
{
e.CanExecute = true;
}
else
{
e.CanExecute = false;
}
}
Другой недостаток текущей реализации связан с тем, что она подра-
зумевает создание двух привязок команд, в то время как на самом деле
необходима только одна. Это привносит беспорядок в файл XAML и
Страницы
- « первая
- ‹ предыдущая
- …
- 102
- 103
- 104
- 105
- 106
- …
- следующая ›
- последняя »