В моем проекте Silverlight я создаю простую двустороннюю привязку в коде:
Это свойство, к которому я хочу привязать:
public class Selection : ViewModelBase {
private string selectedModel;
public string SelectedModel {
get { return selectedModel; }
set {
selectedModel = value;
FirePropertyChanged("SelectedModel");
}
}
}
Моей целью привязки является текстсвойство расширенного текстового поля.
Мой код привязки следующий:
Selection s = getSelectionObject();
Binding modelBinding = new Binding("SelectedModel");
modelBinding.Source = s.SelectedModel;
selectorContent.usc_ModelSelector.SetBinding(GSelector.TextProperty, modelBinding);
Это прекрасно работает!Каждый раз, когда свойство SelectedModel объекта Selection изменяется, поле расширенного текста получает уведомление и соответствующим образом обновляется.Но он связан только в одну сторону, и мне нужно, чтобы он был связан в двух направлениях.Поэтому я попытался изменить режим привязки, изменив приведенный выше код:
Binding modelBinding = new Binding("SelectedModel");
modelBinding.Path = new PropertyPath(s.SelectedModel);
modelBinding.Source = s.SelectedModel;
modelBinding.Mode = BindingMode.TwoWay;
selectorContent.usc_ModelSelector.SetBinding(GSelector.TextProperty, modelBinding);
Но это не работает.Он компилируется, но вся привязка теперь кажется безрезультатной.Мало того, что я не могу вызвать изменение в ViewModel (в классе Selection в свойстве SelectedModel - что должно быть эффектом, когда двусторонняя привязка будет работать правильно) при изменении текста RichTextBox, я даже не могусмотрите больше одностороннюю привязку, которая работала с приведенным выше кодом!
Кажется, что строка
modelBinding.Path = new PropertyPath(s.SelectedModel);
является источником проблемы, потому что когда я устанавливаю s.SelectedModel каксвойство Path bindings, а затем свойство Path объекта modelBinding, по-видимому, имеет правильное значение (при котором во время отладки был обнаружен внешний вид объекта во время отладки - это строковое значение), но я не вижу никаких изменений в поле расширенного текста,
Восстановление кода в версии односторонней привязки немедленно приводит к тому, что поле расширенного текста снова работает, как и должно.
Кто-нибудь может помочь?Я уже потратил на это несколько часов, и мне действительно нужно поймать крайний срок клиента. Поэтому любая помощь будет высоко оценена :) Большое спасибо заранее ...