【发布时间】:2015-06-14 21:59:48
【问题描述】:
我有一个 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。”。我尝试将路径值设置为“。”因为我的目标是相同的源值,但是绑定失败了。
请指教,
【问题讨论】:
-
我知道您已经尝试过,但您是否这样做过 -- path=.
-
@Muds 你的意思是:Text="{Binding path=.}",当然我做到了,我在问题中这么说
-
您必须创建一个将字符串作为属性公开的数据项类。 Binding 可以更改其源属性,但不能替换集合中的字符串。
-
@Clemens,谢谢,但我认为如果我们可以直接访问该值,那么作为设计问题会更好。
-
是的,Clemens 是对的,你需要在你的字符串周围有一个包装类......如果你需要样本,请告诉我