Практическое руководство. Управление обновлением источника из поля 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 работали, исходный объект должен предоставить уведомление об изменениях свойства.Можно обратиться к примеру в данном разделе для получения дополнительных сведений.Кроме того, можно посмотреть в Практическое руководство. Реализация уведомления об изменении свойства. |