开发者

wpf binding to string

I have a Movie class with a Dim _characters = New ObservableCollection(of String)

Characters is the associated property to get and set

How can i get characters to show up in the listBox using Binding?

So far i have the following, this isn't working as i don't know what to put instead of ToStrin开发者_Python百科g.

<ListBox Name="cList" ItemsSource="{Binding Characters}">

 <ItemsControl >
   <ItemsControl.ItemTemplate >
    <DataTemplate >
     <TextBox Text="{Binding ToString}"/>  
    </DataTemplate> 
   </ItemsControl.ItemTemplate> 
 </ItemsControl>

 </ListBox> 

I want them to be editable, hence a textbox.

i tried to bind Characters to TextBox directly, even that didn't work.

Edit : in the code i have parentGrid1.DataContext = me.movies where

parent grid holds movies.


For those who are experiencing the exception

... binding requires path or xpath ...

You can bind the object directly this way:

<Label Content="{Binding .}" />


Change your TextBox binding to the following. I think it should work:

<TextBox Text="{Binding}"/>

This loads the item itself instead of a property or method output. Since the item is a string it should bind to the strings value.


You cannot perform two-way binding to ObservableCollection<string>. In order to make the strings editable you have to create a class with a string get/set property as the following class Foo:

public class Foo
{
    string _text;

    public Foo(string text)
    {
        _text = text;
    }
    public string Text 
    {
        get { return _text; }
        set { _text = value; }
    }
}

Your Characters should then be of type ObservableCollection<Foo> and your XAML should be changed so that the textboxes are binding to Foo.Text:

<ListBox ItemsSource="{Binding Characters}" >
    <ListBox.ItemTemplate >
        <DataTemplate >
            <TextBox Text="{Binding Text}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


Just remove the ToString portion of the code.

Currently you are telling the program that you want to bind to an object called ToString


I take it that Characters is a public property. Debug and be sure that get is being called for Characters. If you have a the datacontext of the page/window to Movies then you need ItemsSource on the ListBox to be {Binding Path=Characters}

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜