Связывание данных WPF с помощью конструктора - PullRequest
0 голосов
/ 08 июня 2010

(для этого примера) ListBox l привязан к CustomObjectCollection c.

Я называю конструктор c?

Что, если c - Универсальный Объект?

**In XAML (1)**
<ListBox Content={Binding CustomObjectCollection}/>

**In Codebehind**
CustomObjectCollection<MyClass> c;
**In XAML (2)**
<ListBox Content={Binding CustomObjectCollection}/>

Предположим, в c я заполняю коллекцию (динамически, с помощью конструктора)
Какая привязка будет вызывать конструктор?

Извините, если это неясно, я понятия не имею, как это объяснить.

Ответы [ 2 ]

1 голос
/ 08 июня 2010

Вы должны привязать к собственности.Если исходный объект должен быть построен, то это должно быть сделано в следующем коде.

<ListBox ItemsSource={Binding ListSource} />

//Codebehind
class MyControl : UserControl {
    public CustomObjectCollection ListSource {get; private set;}

    public MyControl() {
      ListSource  = new CustomObjectCollection (/*arguments*/);
      InitializeComponent();
      DataContext = this;
    }
}
1 голос
/ 08 июня 2010

Пара вещей:

  1. Вы можете привязать только к публичным свойствам.Похоже, вы c объявлены как переменная-член, но не как свойство.Так что это связывание не будет успешным.
  2. Невозможно связать, используя свойство Content для ListBox.Я думаю, что то, что вы пытаетесь сделать, лучше выполнить с помощью свойства ItemsSource.Проверьте пример, связанный на MSDN;это должно начать вас.
...