2014-10-30 4 views
0

Я пытаюсь связать элемент внутри DataTemplate ListView.ItemTemplate. Это ListView находится в сетке, как показано ниже:Runtime привязка к элементам в ListView.ItemTemplate

<Grid x:Name="catPageGrid"> 
    <Grid.ChildrenTransitions> 
     <TransitionCollection> 
      <EntranceThemeTransition /> 
     </TransitionCollection> 
    </Grid.ChildrenTransitions> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <!-- Title Panel --> 
    <StackPanel Grid.Row="0" Margin="19,0,0,0"> 
     <TextBlock x:Uid="Header" 
        Margin="0,12,0,0" 
        Style="{ThemeResource TitleTextBlockStyle}" 
        Text="category page" /> 
     <TextBlock Margin="0,-6.5,0,26.5" 
        CharacterSpacing="{ThemeResource PivotHeaderItemCharacterSpacing}" 
        Style="{ThemeResource HeaderTextBlockStyle}" 
        Text="{Binding}" 
        TextWrapping="NoWrap" /> 
    </StackPanel> 

    <ListView x:Name="lvAmenityItem" 
       Grid.Row="1" 
       Margin="19,0,0,0" 
       AutomationProperties.AutomationId="ItemListView" 
       AutomationProperties.Name="Items In Group" 
       IsItemClickEnabled="True" 
       IsSwipeEnabled="false" 
       ItemClick="ItemView_ItemClick" 
       ItemsSource="{Binding}" 
       SelectionMode="None" 
       TabIndex="1"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid x:Name="grAmenityItem"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 

        <Border Width="79" 
          Height="79" 
          Margin="0,9.5,0,0" 
          Background="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"> 
         <Image AutomationProperties.Name="{Binding}" 
           Source="{Binding}" 
           Stretch="UniformToFill" /> 
        </Border> 
        <StackPanel Grid.Column="1" 
           Margin="14.5,0,0,0" 
           VerticalAlignment="Top"> 
         <TextBlock Style="{ThemeResource ListViewItemTextBlockStyle}" Text="{Binding}" /> 
        </StackPanel> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
</Grid> 

я использовал во время выполнения связывания на сетке:

private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e) 
    { 
     var group = TestDataSource.GetAmenityGroup((string)e.NavigationParameter); 
     catPageGrid.DataContext = group; 

     //lvAmenityItem.DataContext = TestDataSource.GetAmenityItem((string)e.NavigationParameter); 
    } 

Моя проблема в том, что я не вижу сетку с элементами после запуска.

Я сделал это из шаблона проекта концентратора по умолчанию. Я успешно привязан так же, как к концентратору (для отображения информации «первого уровня» (т. Е. AmenityGroup имеет AmenityItem (s)))

Я делаю что-то неправильно здесь? Или я не могу так сделать?

Спасибо за ваше время: D

EDIT:

Приведенный ниже код отображает только один пункт ... как начало

Binding binding = new Binding() { Source = group.AmenityItems }; 
lvAmenityItem.SetBinding(ListView.DataContextProperty, binding); 

ответ

0

Okay добавив Binding сделал трюк

Только что сменили текст на:

Где Name - это переменная в классе сущности, возвращаемая в group.

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