将集合绑定到Listbox

时间:2010-06-04 13:01:33

标签: c# wpf data-binding

我今天基本上开始使用WPF,而且我对绑定的难度感到震惊。我在TextBoxes中有一个ObservableCollection数组,只想在Listbox中绑定它,以便它们自己垂直排列。

我已经为3已经摆弄了这个,你能帮忙吗?

我正在使用WPF UserControl,而不是像许多教程似乎依赖的窗口。

3 个答案:

答案 0 :(得分:3)

在您的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 :(得分:3)

拥有ObservableCollection<TextBox>几乎总是错误的做法。您可能需要ObservableCollection<string>代替。

然后,在ListBox(或Items Collection)中,您有以下代码:

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

答案 2 :(得分:1)

使MyTextBoxCollection(您的文本框的ObservableCollection)成为DataContext的公共属性。

<ListBox ItemsSource=”{Binding MyTextBoxCollection}”>
  <ListBox.ItemTemplate>
    <DataTemplate><TextBox Text=”{Binding Text}” /></DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>