2014-11-13 3 views
0

Это проводной. Я разрабатываю приложение WP8. код XAML является:Listbox не отображается в WP8 Emulator

<phone:PhoneApplicationPage 
    x:Class="WPTestService4DotNet.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    shell:SystemTray.IsVisible="True"> 

    <!--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 x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/> 
      <TextBlock x:Name="PageTitle" Margin="9,-7,0,0" Style="{StaticResource PhoneTextNormalStyle}"/> 
     </StackPanel> 

     <!--ContentPanel - place additional content here--> 
     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <TextBlock Grid.Row="0" Text="avatar" FontSize="18"></TextBlock> 

      <ListBox Grid.Row="1" x:Name="ResultBox" BorderBrush="Bisque" BorderThickness="4" DataContext="{Binding}"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="inner display" FontSize="18"></TextBlock> 
          <TextBlock Text="{Binding Path=Id}" FontSize="18" FontStyle="Italic" TextWrapping="Wrap"></TextBlock> 
          <TextBlock Text="{Binding Path=Title}" FontSize="18" TextWrapping="Wrap"></TextBlock> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
     </Grid> 
    </Grid> 

</phone:PhoneApplicationPage> 

и код CS является:

public partial class MainPage : PhoneApplicationPage 
    { 
     // Constructor 
     public MainPage() 
     { 
      InitializeComponent(); 

      var results = new List<Result>(); 
      results.Add(new Result() { Id = "1", Title = "first" }); 
      results.Add(new Result() { Id = "2", Title = "second" }); 
      results.Add(new Result() { Id = "3", Title = "third" }); 
      this.DataContext = results; 
      // Sample code to localize the ApplicationBar 
      //BuildLocalizedApplicationBar(); 
     } 
     public class Result 
     { 
      public string Id { set; get; } 
      public string Title { set; get; } 
     } 
} 

Содержание в ListBox не отображается в Windows Phone 8 эмулятора. Я не думаю, нет ошибки в моем коде это так просто, но я не»знаю, почему

ответ

0

Это ItemsSource, который определяет выход из <ListBox.ItemTemplate>

this.ResultBox.ItemsSource = results; 

Вообще вы установили DataContext в ViewModel, то ItemsSource для коллекции/списка, который находится внутри ViewModel.

+0

Спасибо! это работает, я новичок в WP8, и я буду больше разбираться в модели данных WP8! благодаря! – user3231931

+0

@ user3231931 np, если вы только начинаете с модели данных. У меня довольно хорошая запись здесь: http://stackoverflow.com/questions/25613212/how-to-implement-a-navigation-button-in-shared-application-resources/25627927#25627927 он перебирает ListView с моделью/viewmodel и т. д. Если приведенный выше ответ хорошо работает для вас, пожалуйста, пометьте его как решенный. –

+0

На самом деле, я ненавижу язык .net, который должен установить, и установить это как правило. Мне нравится писать вещи сами, так что все под контролем. – user3231931

0

Вы также можете установить ItemsSource="{Binding}" int your ListBox.

+0

Вы правы, я нашел, что это работает так же хорошо. Спасибо. Но я могу выбрать только правильный ответ. – user3231931

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