2015-06-28 5 views
0

я работаю на Windows Phone 8.1 приложения (не SL) и у меня есть следующие модели:Bind ListView в список объектов трех уровней глубоких

Quiz 
    -- Question 
     -- Text 
     -- Options 
      Options 1 (name, value) 
      Options 2 (name, value) 
      Options 3 (name, value) 

В моей странице XAML, у меня есть ListView. Я пытаюсь связать список вариантов с ним, например:

<Page.Resources> 
    <DataTemplate x:Key="TemplateOptions"> 
     <TextBlock Text="{ Binding Name }" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Foreground="Black" FontWeight="Bold"></TextBlock> 
    </DataTemplate> 
</Page.Resources> 

<ListView Grid.Row="1" ItemsSource="{Binding Question.Options}" ItemTemplate="{StaticResource TemplateOptions}"></ListView> 

Но это не работает! Когда я запускаю приложение, список пуст. Что я делаю не так?

Благодаря

+0

Ваш ItemsSource по-видимому, связан с неправильным собственности. Он должен быть связан с вашей коллекцией вопросов. –

+0

@JamesPack Я сделал исправление для кода. У меня есть только один «Вопрос» под 'Quiz' и коллекция' Options' под 'Question' – Ciwan

+0

Вы получаете какие-либо ошибки привязки в окне вывода? Какой цвет является фоном вашей страницы? –

ответ

0

я получил его на работу, как это:

CodeBehind:

public sealed partial class MainPage : Page 
{ 

    public class Quiz 
    { 
     public Question Question { get; set; } 
    } 

    public MainPage() 
    { 
     this.InitializeComponent(); 

     var options = new List<Option>(); 
     options.Add(new Option { name = "foo", value = "bar" }); 
     options.Add(new Option { name = "foo", value = "bar" }); 
     options.Add(new Option { name = "foo", value = "bar" }); 
     options.Add(new Option { name = "foo", value = "bar" }); 

     var question = new Question 
     { 
      Text = "Question 1", 
      Options = new ObservableCollection<Option>(options) 
     }; 


     this.DataContext = new Quiz { Question = question }; 
    } 

    /// <summary> 
    /// Invoked when this page is about to be displayed in a Frame. 
    /// </summary> 
    /// <param name="e">Event data that describes how this page was reached. 
    /// This parameter is typically used to configure the page.</param> 
    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 

    } 
} 

public class Question 
{ 
    public string Text { get; set; } 
    public ObservableCollection<Option> Options { get; set; } 
} 

public class Option 
{ 
    public string name { get; set; } 
    public string value { get; set; } 

} 

MainPage.xaml

<Page.Resources> 
    <DataTemplate x:Key="TemplateOptions"> 
     <TextBlock Text="{Binding name}" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Black" FontWeight="Bold"></TextBlock> 
    </DataTemplate> 
</Page.Resources> 
<Grid Background="White"> 
    <ListView ItemsSource="{Binding Question.Options}" ItemTemplate="{StaticResource TemplateOptions}"></ListView> 
</Grid> 
+0

Это тоже работает для меня, но это не 3 уровня, а только 2. Как я могу заставить его работать так, как будто у меня есть? 'Quiz'>' Question'> 'List ' – Ciwan

+0

Должно быть, я не понимаю, о чем вы спрашиваете. Сожалею. –

+0

Ваш вопрос говорит о 2 уровнях в глубину. –

Смежные вопросы