Привязка данных работает для строки, но не работает для строки внутри объекта - PullRequest
0 голосов
/ 09 декабря 2011

Итак, у меня есть свойство String, привязанное к свойству Text текстового поля, и оно работает нормально -

public String MyString { get; set; }
MyString = "Hello World";
<TextBox Text="{Binding Path=MyString}"....

Однако, когда я пытаюсь связать, используя строку внутри объекта, это не такработа ... вроде так

public class MyObject
{
    public String MyString { get; set; }
}

MyObject myObject = new MyObject();
myObject.MyString = "Hello World";
<TextBox Text="{Binding Path=myObject.MyString}"...

Я не могу понять, почему это не обязательно.Все, что я сделал, это поместил строку в класс, а затем изменил xaml, чтобы отразить это.Есть идеи, что не так?

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Вам необходимо предоставить экземпляр myObject со свойством ViewModel вместо того, чтобы просто использовать локальную переменную (что, по-видимому, вы делаете на основе опубликованного вами кода).Примерно так:

public MyObject Obj { get; set; }

Obj = new MyObject()  { MyString = "Hello World" };

и в вашем XAML:

<TextBox Text="{Binding Path=Obj.MyString}" ...
0 голосов
/ 09 декабря 2011

Я согласен с Джоном. Вы должны использовать INotifyPropertyChanged или свойство зависимости, чтобы правильно связать свойство с вашим пользовательским интерфейсом. Вполне возможно, что привязка работает, но выглядит как пустая строка, поскольку привязка произошла до того, как было установлено значение.

Когда вы устанавливаете свой DataContext?

0 голосов
/ 09 декабря 2011

Возможно, вы вносите изменения после того, как происходит привязка, и, поскольку вы не видите, внедряет INPC, после того как строка / объект обновлена, привязка не обновляется.задавать.

(Возможно, вы также захотите взглянуть на обзор , если вы не знакомы с привязками.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...