C# 如何将observableCollection字符串绑定到列表框
我有一个observableCollection实例,我想将它绑定到一个列表,并让用户能够直接更改此集合中的字符串 目前的实施情况如下:C# 如何将observableCollection字符串绑定到列表框,c#,wpf,C#,Wpf,我有一个observableCollection实例,我想将它绑定到一个列表,并让用户能够直接更改此集合中的字符串 目前的实施情况如下: class container { public OBservableCollection<string> data {get; set;} public container() { data = new ... } } ... var instance = new container(); listBox.ItemsSource
class container
{
public OBservableCollection<string> data {get; set;}
public container() { data = new ... }
}
...
var instance = new container();
listBox.ItemsSource = instance.data;
类容器
{
公共可观测收集数据{get;set;}
公共容器(){data=new…}
}
...
var实例=新容器();
listBox.ItemsSource=instance.data;
对于XAML:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding}" MinWidth="50"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
当我向该列表添加任何字符串时,会出现一个错误,“双向绑定需要路径或XPath”。我尝试将路径值设置为“.”,因为我的目标是相同的源值,但绑定失败
请注意,WPF绑定不能替换集合中的元素 您必须创建一个具有字符串属性的数据项类
class Item
{
public string Text { get; set; }
}
class Container
{
public ObservableCollection<Item> Data { get; set; }
}
类项目
{
公共字符串文本{get;set;}
}
类容器
{
公共可观测收集数据{get;set;}
}
这可能是双向的:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Text}" MinWidth="50"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我知道您已经尝试过了,但是您是否这样做了--path=。@Muds您的意思是:Text=“{Binding path=。}”,当然我做了,我在问题中说过,您必须创建一个数据项类,将字符串作为属性公开。绑定可以更改其源属性,但不能替换集合中的字符串。@Clemens,谢谢,但我认为如果我们可以直接访问该值,从设计角度看会更好。是的,Clemens是对的,您需要在字符串周围有一个包装类。。。如果您需要样品,请告诉我