Привязка коллекции к списку - PullRequest
2 голосов
/ 04 июня 2010

Я в основном начал сегодня с WPF, и я поражен тем, насколько сложно выполнить связывание. У меня есть массив TextBoxes в ObservableCollection, и я просто хочу связать его в моем Listbox, чтобы они располагались вертикально.

Я уже возился с этим уже 3, вы можете помочь?

Я работаю в WPF UserControl, а не в окне, так как многие учебные пособия полагаются на него.

Ответы [ 3 ]

3 голосов
/ 04 июня 2010

Наличие ObservableCollection<TextBox> - это всегда неправильный подход. Вы, вероятно, хотите вместо этого ObservableCollection<string>.

Затем в вашем ListBox (или ItemsCollection) у вас есть следующий код:

<ListBox ItemsSource="{Binding MyStrings}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding .}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
3 голосов
/ 04 июня 2010

В вашем коде C # вы можете сделать что-то вроде этого:

myListBox.ItemsSource = myTextBoxesCollection;

Или в вашем коде XAML:

<ListBox ItemsSource="{Binding MyTextBoxesCollection}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Text}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Для XAML MyTextBoxesCollection должна быть публичной собственностью в контексте ваших данных. Один из способов установить DataContext может быть в вашем конструкторе:

DataContext = this;
1 голос
/ 04 июня 2010

Сделайте MyTextBoxCollection (вашу ObservableCollection текстовых полей) открытым свойством вашего DataContext.

<ListBox ItemsSource=”{Binding MyTextBoxCollection}”>
  <ListBox.ItemTemplate>
    <DataTemplate><TextBox Text=”{Binding Text}” /></DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...