我有一个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。”。我尝试将路径值设为“。”因为我的目标是相同的源值,但绑定失败了。
请指教,
答案 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>