2013-04-05 3 views
1

У меня есть следующий в моем XAML:WPF TwoWay не работает на X (выход), но работает на TAB или нажав другие

<TextBox Name="TitleValue" 
     Text="{Binding ElementName=ListValue, Path=SelectedItem.Title, Mode=TwoWay}" 

<TextBox Name="DescValue" 
     Text="{Binding ElementName=ListValue, 
         Path=SelectedItem.Description, Mode=TwoWay}" 

Когда я ввести значение в любом TitleValue или DescValue и Tab или нажмите на различное расположение в окне, свойства класса коллекции обновляются правильно. Затем, когда я нажимаю X для выхода из окна, данные в классе коллекции сохраняются правильно.

Однако, когда я ввожу значение в любом из этих полей, затем нажмите X, чтобы выйти из окна, данные в классе коллекции сохранены, но введенное значение не сохраняется для этого конкретного поля, которое я редактировал, когда я щелкнули X.

Я реализовал событие потерять фокусировку на полях, и они работают, даже когда щелкнул X. В этих случаях я поставил код:

private void Event_DescValue_LoseFocus(object sender, RoutedEventArgs e) 
{ 
    ((Import)ListValue.SelectedItem).Description = ((TextBox)e.OriginalSource).Text; 
} 

Но это тоже не сработало. следующий не работает либо:

Imports[ListValue.SelectedIndex].Description = ((TextBox)e.OriginalSource).Text; 

Как получить Импорт коллекции класса для обновления выбранного класса импорта, когда X нажат, когда в поле редактируется?

Он должен работать точно так же, как у меня есть вкладка с редактируемого поля или щелчка в другом месте в окне.

+0

Определение "данные в класс коллекции сохраняется". Где вы сохраняете эти данные? – Paparazzi

+0

Попробуйте добавить 'UpdateSourceTrigger = PropertyChanged' к вашим привязкам. –

ответ

1

Измените привязку привязки UpdateSourceTrigger на PropertyChanged.

Как так:

<TextBox Name="TitleValue" Text="{Binding ElementName=ListValue, 
    Path=SelectedItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
+0

Спасибо, что сделал трюк. Но почему это не нужно, если вы просто выходите из редактируемого поля или щелкаете в другом месте в окне, но это необходимо, если после редактирования поля вы нажимаете X, чтобы выйти из окна? Это просто не имеет смысла. – RFM

+0

@RFM Извините, что я так долго отвечал ... взгляните на документацию MSDN. Значение по умолчанию для UpdateSourceTrigger - это свойство LostFocus в свойстве Text, однако большинство других свойств имеют значение UpdateSourceTrigger по умолчанию для PropertyChanged. [msdn]: http: //msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx – Whyaduck