C # WPF DataTemplate привязка - PullRequest
       4

C # WPF DataTemplate привязка

0 голосов
/ 16 декабря 2011

Я связываю MyListBox со списком экземпляров MyObject. MyObject содержит строковое поле с именем TextField. Я хочу привязать каждый элемент в listBox к MyObject.TextField. Мой код следующий, но он не работает.

<ListBox Name="MyListBox">
    <ListBox.ItemTemplate>
            <DataTemplate>                
                    <TextBlock Text="{Binding Path=TextField}"></TextBlock>
            </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Как правильно это сделать?

Решено: TextField класса My Object не является свойством

Ответы [ 2 ]

2 голосов
/ 16 декабря 2011

Убедитесь, что в ListBox установлен ItemsSource :

<ListBox Name="MyListBox" ItemsSource="{Binding theList}">
    <ListBox.ItemTemplate>
            <DataTemplate>                
                    <TextBlock Text="{Binding TextField}" />
            </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
0 голосов
/ 16 декабря 2011

РЕДАКТИРОВАТЬ: я попробовал решение в VS 2010 ... вот код

сначала вы создаете свой собственный класс, например, класс персонажа

class Person
{

    public Person(String name)
    {
        this.name = name;
    }

    String name;
    public String Name
    {
        get { return name; }
        set { name = value; }
    }
}

, затем вы создаете список вxaml вот так

<ListBox Height="222" HorizontalAlignment="Left" Margin="105,28,0,0" Name="listBox1" VerticalAlignment="Top" Width="120" ItemsSource="{Binding}" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=Name}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

примечание в xaml Path = Name - это свойство, которое вы хотите отобразить в списке

в коде файла, введите следующий код

        List<Person> persons = new List<Person>();
        persons.Add(new Person("person 1"));
        persons.Add(new Person("person 2"));
...