2009-07-17 1 views
0

Когда я привязываю свойство в модели просмотра child к TextBox, источник не будет обновляться независимо от того, какой режим я устанавливаю для привязки.Проблема с привязкой к WPF (MVVM)

Код по XAML, как это:

<TextBox Text="{Binding Path=OrderDetail.CashPaid, Mode=TwoWay}"/> 

Wwhen точка зрения загруженного, связывающая система запроса по CashPaid свойства один раз. но всякий раз, когда текст редактируется, значение не будет обновлять источник. Я должен что-то упустить или система привязки данных WPF не поддерживает такой привязкой.

+0

Вы не знаете, что редактируется - текст в текстовом поле или текст в свойстве CashPaid. – Will

+0

текст в текстовом поле редактируется пользователем. – 2009-07-17 17:06:29

ответ

1

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

<TextBox Text="{Binding Path=OrderDetail.CashPaid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
+0

Да, я пытаюсь установить UpdateSourceTrigger = PropertyChanged, не повезло. – 2009-07-17 16:47:07

2

Вы также должны убедиться, что OrderDetail реализует INotifyProperty изменился и убедитесь, что ваше имущество CashPaid уведомляется при его изменении. Дополнительную информацию об этом см. В документе MSDN.

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx

+1

См. Также «Практическое руководство. Внедрение интерфейса INotifyPropertyChanged»: http://msdn.microsoft.com/en-us/library/ms229614.aspx –

+0

Да, у меня есть интерфейс INotifyProperty и поднимите событие в сеттер. для регулярного связывания, например. просто привязывайтесь к текущему свойству datacontext/viewmodel, он отлично работает. единственная разница заключается в том, где находится имущество. Я даже пытаюсь установить dataContext в текстовое поле в OrderDetail и обычно устанавливать привязку текста, не имеет никакого значения. – 2009-07-17 16:49:55

+0

В этом случае попробуйте установить параметр BindsDirectlyToSource = true и посмотреть, не изменит ли он что-либо. Кроме того, является ли свойство CashPaid строкой? Если нет, он не может связывать TwoWay без IValueConverter. –

0

Используйте Snoop, чтобы проверить, если у вас есть привязки об ошибках на TextBox текстового свойства. большую часть времени вы можете получить довольно хорошее представление о том, что на самом деле происходит, когда вы его используете.

 Смежные вопросы

  • Нет связанных вопросов^_^