2010-06-07 5 views
0

(В этом примере) ListBox l привязан к CustomObjectCollection c.WPF DataBinding с конструктором

Я могу назвать конструктор c?

Что делать, если c - общий объект?

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

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

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

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

+1

Этот вопрос не очень понятно. Что вы пытаетесь достичь? Можете ли вы разместить свой XAML/код? – Charlie

ответ

1

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

<ListBox ItemsSource={Binding ListSource} /> 

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

    public MyControl() { 
     ListSource = new CustomObjectCollection (/*arguments*/); 
     InitializeComponent(); 
     DataContext = this; 
    } 
} 
1

Пара вещей:

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