Практическое руководство. Управление обновлением источника из поля TextBox

В этом разделе описывает способы использования свойства UpdateSourceTrigger для контроля времени обновлений источника привязки. В разделе используется элемент управления TextBox в качестве примера.

Пример

Свойство TextBox. Text имеет значение UpdateSourceTrigger LostFocus по умолчанию. Это означает, что если приложение имеет TextBox с привязки к данным свойствам TextBox. Text, текст, вводимый вами в TextBox, не обновляет источник до тех пор, пока TextBox не потеряет фокус (например, если щелкнуть мышью вне TextBox).

Если требуется, чтобы источник обновлялся при вводе, задайте UpdateSourceTrigger привязки к PropertyChanged. В следующем примере свойства Text и TextBox, и TextBlock связаны с теми же свойствами источника. Свойство UpdateSourceTrigger привязки TextBox устанавливается в значение PropertyChanged.

<Label>Enter a Name:</Label>
<TextBox>
  <TextBox.Text>
    <Binding Source="{StaticResource myDataSource}" Path="Name"
             UpdateSourceTrigger="PropertyChanged"/>
  </TextBox.Text>
</TextBox>

<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>

В результате TextBlock отображает текст (поскольку источник изменяется), которой пользователь вводит в TextBox, как показано на следующем снимке экрана:

Снимок экрана простого примера привязки данных

Если имеется диалоговое окно или редактируемая пользователем форма, и требуется отложить обновление источника до тех пор, пока пользователь не завершит редактирование поля и нажмет кнопку «ОК», то можно установить значение UpdateSourceTrigger привязки в Explicit, как в следующем примере:

<TextBox Name="itemNameTextBox"
         Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />

Если задано значение UpdateSourceTrigger, равное Explicit, то значение источника изменится только тогда, когда приложение вызовет метод UpdateSource. В следующем примере показан способ вызова UpdateSource для itemNameTextBox:

Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
ПримечаниеПримечание

Можно использовать одинаковые технологии для свойств других элементов управления, но следует помнить, что большинство других свойств имеют значения UpdateSourceTrigger для PropertyChanged по умолчанию.Дополнительные сведения см. в свойстве на странице свойства UpdateSourceTrigger.

ПримечаниеПримечание

Свойство UpdateSourceTrigger имеет дело с обновлениями источника и, таким образом, относится только к привязкам TwoWay или OneWayToSource.Чтобы привязки TwoWay и OneWayToSource работали, исходный объект должен предоставить уведомление об изменениях свойства.Можно обратиться к примеру в данном разделе для получения дополнительных сведений.Кроме того, можно посмотреть в Практическое руководство. Реализация уведомления об изменении свойства.

См. также

Другие ресурсы

Практические руководства по привязке данных