我有一个Movie
班,Dim _characters = New ObservableCollection(of String)
Characters
是要获取和设置的关联属性
如何使用Binding将字符显示在listBox中?
到目前为止,我有以下情况,这是行不通的,因为我不知道该放什么而不是ToString
。
<ListBox Name="cList" ItemsSource="{Binding Characters}">
<ItemsControl >
<ItemsControl.ItemTemplate >
<DataTemplate >
<TextBox Text="{Binding ToString}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ListBox>
我希望它们可以编辑,因此是一个文本框。
我试图直接将Characters
绑定到TextBox
,即使这样也无效。
编辑:
在代码中我有parentGrid1.DataContext = me.movies
其中
父网格持有电影。
答案 0 :(得分:9)
对于遇到异常的人
...绑定需要路径或xpath ...
您可以通过以下方式直接绑定对象:
<Label Content="{Binding .}" />
答案 1 :(得分:5)
将TextBox绑定更改为以下内容。我认为它应该有效:
<TextBox Text="{Binding}"/>
这会加载项目本身而不是属性或方法输出。由于该项是字符串,因此它应绑定到字符串值。
答案 2 :(得分:3)
只需删除代码的ToString
部分即可。
目前,您告诉程序要绑定到名为ToString
答案 3 :(得分:3)
您无法对ObservableCollection<string>
执行双向绑定。为了使字符串可编辑,您必须创建一个带有字符串get / set属性的类作为以下类Foo
:
public class Foo
{
string _text;
public Foo(string text)
{
_text = text;
}
public string Text
{
get { return _text; }
set { _text = value; }
}
}
您的Characters
应该是ObservableCollection<Foo>
类型,并且您的XAML应该更改,以便文本框绑定到Foo.Text
:
<ListBox ItemsSource="{Binding Characters}" >
<ListBox.ItemTemplate >
<DataTemplate >
<TextBox Text="{Binding Text}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 4 :(得分:2)
我认为角色是公共财产。调试并确保为字符调用get。如果你有一个关于电影的页面/窗口的datacontext,那么你需要ListBox上的ItemsSource为{Binding Path = Characters}