У меня есть класс с именем ProfileViewModel, который состоит из простых свойств, как так:Как реализовать двустороннюю привязку данных?
class SomeViewModel : INotifyPropertyChanged
{
private Foo foo;
public Foo Foo
{
get { return foo; }
}
public string Bar
{
get { return foo.bar; }
set
{
foo.bar = value;
NotifyPropertyChanged ("Bar");
}
}
// More properties like the above
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged (string Info)
{
if (PropertyChanged != null)
{
PropertyChanged (this, new PropertyChangedEventArgs (Info));
}
}
я удалил некоторые биты, которые на самом деле не важно. Теперь я пытаюсь создать двустороннюю привязку между некоторыми текстовыми полями и свойствами указанного класса, но ничего не работает. В XAML я попытался как:
<TextBox Margin="5, 25, 5, 0" VerticalAlignment="Top" Height="25" Name="BarField"
Text="{Binding CurrentFoo.Bar}"/>
и
<TextBox Margin="5, 75, 5, 0" VerticalAlignment="Top" Height="25" Name="BarField"
Text="{Binding Bar, ElementName=CurrentFoo}"/>
ни один из которых в настоящее время работает (независимо установлен ли я, чтобы быть Two-Way
или нет), так как ничто не появляется в текстовом поле, а также не изменение текста в текстовом поле влияет на объект CurrentFoo. Что именно я делаю неправильно? Что здесь отсутствует? Нужно ли мне делать привязку в коде?
Вы пытались: Text = "{Binding Bar, ElementName = CurrentFoo, Mode = TwoWay}" – Ugur
Свойство TextBox 'Text' - это TwoWay по умолчанию, не нужно указывать его в Binding. – almulo
Да, я отредактировал сообщение, потому что забыл упомянуть, что – MKII