如何将observableCollection字符串绑定到listBox

时间:2015-04-09 13:39:56

标签: c# wpf

我有一个observableCollection实例,我想将它绑定到一个列表,并让用户能够直接更改此集合中的字符串。

目前的实施如下:

class container
{
    public OBservableCollection<string> data {get; set;}
    public container() { data = new ... }
}
...
var instance = new container();
listBox.ItemsSource = instance.data;

和XAML:

<ListBox>
 <ListBox.ItemTemplate>
  <DataTemplate>
   <StackPanel Orientation="Horizontal">
    <TextBox Text="{Binding}" MinWidth="50"/>
   </StackPanel>
  </DataTemplate>
 </ListBox.ItemTemplate>
</ListBox>

当我向该列表添加任何字符串时,会出现错误,“双向绑定需要Path或XPath。”。我尝试将路径值设为“。”因为我的目标是相同的源值,但绑定失败了。

请指教,

1 个答案:

答案 0 :(得分:4)

WPF Binding无法替换集合中的元素。

您必须使用字符串属性

创建数据项类
class Item
{
    public string Text { get; set; }
}

class Container
{
    public ObservableCollection<Item> Data { get; set; }
}

可以是双向约束的:

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBox Text="{Binding Text}" MinWidth="50"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>