Как привязать шаблон данных списка к полям класса - PullRequest
1 голос
/ 24 января 2012

У меня есть Class Person, который состоит из FirstName и LastName.Я создал объект типа ObservableCollection и заполнил его некоторыми данными, связал его с Listbox.ItemsSource через code-behind.Теперь я хочу, чтобы эти данные отображались в окне внутри списка, но с помощью шаблона данных, чтобы я мог выбирать, какие поля класса отображать ..

Итак, один элемент будет представлять Имя и Фамили в двухотдельные текстовые блоки.

<Window x:Class="PlayList.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:loc="clr-namespace:PlayList"
Title="Media Player PlayList" 
Height="300" 
Width="300" >

<Grid Height="224" Name="grid1" Width="261" >
    <ListBox Height="100" x:Name="listBox1" Margin="12,0,12,124"  MouseDoubleClick="listBox1_MouseDoubleClick" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Path=FirstName}" />
                    <TextBlock Text="{Binding Path=Surname}"/>

                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

</Grid>

Редактировать:

personae = new ObservableCollection<Person> { per1, per2, per3, per5, per4 };         listBox1.ItemsSource = personae;

Ответы [ 3 ]

2 голосов
/ 24 января 2012

Убедитесь, что FirstName и LastName являются свойствами, а не полями.Правильная настройка источника элементов и вашего примера шаблона должно быть достаточно

2 голосов
/ 24 января 2012

Если объект контекста данных ListBoxItem содержит свойства string FirstName и string Surname, достаточно иметь в разметке следующее:

    <DataTemplate>
        <StackPanel>
            <TextBlock Text="{Binding FirstName}" />
            <TextBlock Text="{Binding Surname}"/>
        </StackPanel>
    </DataTemplate>
0 голосов
/ 24 января 2012

Нельзя связать с полями , только с свойствами (которые предпочтительно относятся к классу , реализующему INPC, если вам нужно изменения для отражения в представлении).

...