У меня есть ComboBox
, отображающий людей, TextBox
для имени, TextBox
для фамилии, Button
для сохранения введенных данных.Пользователь может ввести то, что он хочет, в TextBox
es, и когда он нажимает кнопку «Сохранить», содержимое TextBox
es должно быть сохранено для выбранного в данный момент человека.
Вот как мойTextBox
выглядит в XAML:
<Grid>
<Combobox x:Name="cbPerson" ItemsSource={Binding Source={StaticResource collection_people}
SelectedValue={Binding Path=Firstname} DisplayMemberPath={Binding Path=Firstname}
SelectedValuePath={Binding Path=Firstname}/>
<Textbox x:Name="tbFirstname" Text="{Binding Path=name, Mode=TwoWay,
UpdateSourceTrigger=Explicit}}" Width="Auto"/>
<Textbox x:Name="tbLastname" Text="{Binding Path=name, Mode=TwoWay,
UpdateSourceTrigger=Explicit}}" Width="Auto">
</Grid>
Вот так выглядит моя Button
функция:
private void btnSave_Click(object sender, RoutedEventArgs e)
{
tbFirstname.GetBindingExpression(TextBox.TextProperty).UpdateSource();
tbLastname.GetBindingExpression(TextBox.TextProperty).UpdateSource();
}
В моем классе Person я реализовал интерфейс INotifyPropertyChanged
по порядкудля работы привязки TwoWay.
Когда я выбираю элемент из ComboBox
, TextBox
заполняется соответствующими данными.Затем я могу отредактировать TextBox
и сохранить данные на объект, нажав кнопку сохранения.Все работает, как и следовало ожидать, за исключением одной вещи:
Например, когда я выбираю «Paul» из ComboBox
и меняю текст имени TextBox
с «Paul» на «Leo " и затем выберите другой элемент из ComboBox
БЕЗ нажатия кнопки сохранения, объект предыдущего объекта (" Paul ") все же обновляется.
Почему это так и как я могу это исправить?Мне не удалось найти что-то связанное с этой проблемой.