wpf绑定到字符串

时间:2011-08-04 15:00:26

标签: wpf wpf-controls binding observablecollection

我有一个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其中  父网格持有电影。

5 个答案:

答案 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}