Можете ли вы использовать привязку данных к объектам класса? - PullRequest
0 голосов
/ 11 декабря 2010

Я пытаюсь привязать данные к некоторым текстовым полям, чтобы показать различные поля класса, который я создал:

Я попробовал следующий код.

    MyClass ClassObj = new MyClass();
    DataContext = ClassObj;

    // Create a new binding
    // Val1 is a variable of type String in MyClass class
    Binding myNewBindDef = new Binding("Val1");

    myNewBindDef.Mode = BindingMode.TwoWay;
    myNewBindDef.Source = ClassObj;

    // txtBox1is a TextBlock object that is the binding target object
    BindingOperations.SetBinding(txtBox1, TextBox.TextProperty, myNewBindDef);

Я добавил использование для System.Windows.Data и System.ComponentModel, а MyClass реализует INotifyPropertyChanged. Однако, когда я запускаю приложение, текстовое поле становится пустым, и обновление значения ClassObj.Val1 ни на что не влияет.

Какие шаги я пропускаю или есть лучший способ сделать это?

Спасибо

Ответы [ 2 ]

1 голос
/ 11 декабря 2010

Альтернативой INotifyPropertyChanged было бы сделать MyClass наследованным от DependencyObject и создать DependencyProperty для Val1, используя функцию DependencyProperty.Register ().DependencyProperty должен храниться в статическом члене открытого класса MyClass.Затем в получателе и установщике для свойства Val1 используйте GetValue () и SetValue () для доступа к DependencyProperty.

0 голосов
/ 11 декабря 2010

Ах, оказывается, мне сначала нужно было сделать Val1 общедоступной переменной

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