我必须在其中制作带有文本框的列表框......它必须是动态的。我在后面的代码中有可观察的集合,我想为listbox绑定它。我想要动态列表框,这个列表中应该有可编辑的文本框。所以,基本上我想从列表框中绑定multiplr文本框。任何帮助将不胜感激
<ListBox HorizontalAlignment="Left" Name="ListTwo" Height="100" Margin="286.769,165.499,0,0" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Source=obs}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList"></TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
通过这样做,我的文本框数量与可观察集合中的项目相同,但文本框的文本未设置。
答案 0 :(得分:5)
如果ObservableCollection
中的项只是普通string
s,那么您可以将数据绑定到整个字符串值,如下所示:
<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList" Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
来自MSDN上的Binding.Path
Property页:
可选地,句点(。)路径可用于绑定到当前源。例如,
Text="{Binding}"
相当于Text="{Binding Path=.}"
。
请注意,如果您在集合中有一些具有属性的对象,那么@ nit的答案就是正确的,因为您需要引用相关的属性名称:
<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList" Text="{Binding PropertyName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 1 :(得分:0)
您必须将文本框绑定到您绑定了哪个可观察集合的类中的属性
<ListBox HorizontalAlignment="Left" Name="ListTwo" Height="100" Margin="286.769,165.499,0,0" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Source=obs}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Binding="{Binding PROPERTYINCLASS}"></TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>