我今天基本上开始使用WPF,而且我对绑定的难度感到震惊。我在TextBoxes
中有一个ObservableCollection
数组,只想在Listbox
中绑定它,以便它们自己垂直排列。
我已经为3已经摆弄了这个,你能帮忙吗?
我正在使用WPF UserControl
,而不是像许多教程似乎依赖的窗口。
答案 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>