Как динамически добавлять элементы в LongListSelector Windows Phone 8

Я пытаюсь использовать элемент управления longlistselector для отображения списка людей и детей, которые у них могут быть. У кого-то может быть 1 ребенок, у кого-то больше.

Я пытаюсь использовать ItemTemplate

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="KidsTemplate">
        <StackPanel Grid.Column="1" VerticalAlignment="Top">
            <TextBlock Text="{Binding KidsName}"/>
        </StackPanel>
    </DataTemplate>
    <DataTemplate x:Key="ListTemplate">
        <StackPanel Grid.Column="1" VerticalAlignment="Top">
            <TextBlock Text="{Binding Name}"/>
            <TextBlock Text="{Binding Address}"/>
            <ListBox x:Name="PersonKids"
                     ItemTemplate="{StaticResource KidsTemplate}">
            </ListBox>
        </StackPanel>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!--TitlePanel contains the name of the application and page title-->
    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
        <TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
        <TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
    </StackPanel>

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <phone:LongListSelector x:Name="MultiList"
                            ItemsSource="{Binding Person}"
                            ItemTemplate="{StaticResource ListTemplate}">
        </phone:LongListSelector>
    </Grid>
</Grid>

Попытка использовать следующий класс

public class PersonDetail
{
    public string Name { get; set; }
    public string Address { get; set; }
    public Kids PersonKids { get; set; }
}
public class Kids
{
    public string KidsName { get; set; }
}

введите здесь описание изображения

Любая помощь будет здорово.


person D for Developer    schedule 17.12.2013    source источник
comment
вы можете использовать элементы управления   -  person techloverr    schedule 17.12.2013


Ответы (1)


Прежде всего, вы неправильно написали свои классы:

public class PersonDetail
{
    public string Name { get; set; }
    public string Address { get; set; }
    public List<Kid> PersonKids { get; set; }
}
public class Kid
{
    public string KidsName { get; set; }
}

У человека есть список детей, а не один. Затем исправьте шаблон для отдельного человека:

<ListBox x:Name="PersonKids"
         ItemsSource="{Binding PersonKids}"
         ItemTemplate="{StaticResource KidsTemplate}">
</ListBox>

Теперь вам нужно установить соответствующий DataContext для вашей страницы. Во-первых, добавьте следующее свойство в класс вашей страницы:

public ObservableCollection<PersonDetail> Persons { get; set; }

И добавьте в конструктор следующий код:

Люди = новая ObservableCollection(); Контекст данных = это;

И если вы добавите людей в коллекцию Persons, она должна отображаться правильно.

person Toni Petrina    schedule 17.12.2013
comment
Спасибо за это. Оно работало завораживающе. я знал, что делаю что-то глупое. - person D for Developer; 18.12.2013