Обновить свойство при вводе текста TextBox

200
20 октября 2017, 11:46

Приветствую!

У меня на форме есть текст бокс :

<TextBox TextWrapping="Wrap" Grid.Column="2" Grid.Row="2"
         Text="{Binding TextToSend}"/>

и кнопка

<Button Content="SEND" Command="{Binding InsertMessage}"/>

Внутри вьюмодели есть свойство к которому текст привязан :

private string _texttosend { get; set; }
public string TextToSend
{
    get
    {
        return _texttosend;
    }
    set
    {
        _texttosend = value;
        NotifyPropertyChanged("TextToSend");
    }
}

Команда InsertMessage содержит проверку связанного свойства :

if (!string.IsNullOrWhiteSpace(_texttosend))

И если я нажимаю ПКМ мыши по Button то все работает как надо и текст из бокса попадает в связанное свойство. Однако, если я добавлю кнопке IsDefault="True" то произойдет ошибка - а именно _texttosend == null. Не могу понять почему так. Разница только в том, что первый раз я нажимаю на кнопку мышью а во втором случае вызываю команду через ENTER. В чем может быть причина ?

Answer 1

Дело в том, что по умолчанию обновление источника привязки происходит по событию LostFocus, а при нажатии клавиши Enter фокус не покидает TextBox, поэтому источник привязки не обновляется.

Чтобы добиться нужного эффекта можно включить обновление источника привязки по событию TextChanged, для этого установите свойство UpdateSourceTrigger в значение PropertyChanged:

Text="{Binding TextToSend, UpdateSourceTrigger=PropertyChanged}"
READ ALSO
Создание модели ADO NET из файла базы данных SDB

Создание модели ADO NET из файла базы данных SDB

Есть файл БД с расширением SDBКак его подключить в Visual Studio и создать из не модель, для последующей полноценной работы через Linq

240
Устранение замыленности формы

Устранение замыленности формы

Этот вопрос исходит из этого вопросаМне не нравится что настройки, которые устраняют "замыленность" формы содержаться в app

215
Не удается загрузить файл или сборку

Не удается загрузить файл или сборку

Написал библиотеку классов на с#(ну как написал, скопировал по гайдику)Подключил через "Add/Reference" к другому проекту, в котором требовалась данная...

353
Конвертация string в uint

Конвертация string в uint

Нашёл на стеке пример как можно конвертировать string в uintКак я понял прямого способа нет

220