2014-09-17 1 views
0

Мой код содержит два списка. один для категории, а второй - для данных, которые для выбранного элемента первого списка. Я хочу установить выбранный по умолчанию индекс 0 списка категорий, а второй список отображает данные в качестве выбранного индекса первого списка. оба списка отображаются в моей главной странице.xaml, когда моя главная страница отображает индекс listview index = 0, а другой список отображает данные для выбранной категории первого списка. bothe listview получает данные из Интернета. как это возможно ? пожалуйста помогите. Код для первого ListView: `Listview set default selected index of listview item windows store apps

<ListView x:Name="ctlist" ItemsSource="{Binding}" SelectionChanged="ctlist_SelectionChanged" 
SelectionMode="Single" ScrollViewer.HorizontalScrollMode="Enabled"     ScrollViewer.HorizontalScrollBarVisibility="Visible" Margin="0,0,0,0" Width="1918" Height="80" ItemContainerStyle="{StaticResource OrangeListViewItemStyle}" > 
    <ListView.ItemsPanel > 
     <ItemsPanelTemplate> 
      <StackPanel x:Name="stak3" Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" > 
        <TextBlock Text="{Binding Path=Name}" Margin="10,20,10,10" FontSize="25" Foreground="Black" /> 
       </StackPanel> 
      </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView>` 

для второго ListView:

<ListView Name="display" ItemsSource="{Binding}" SelectionMode="None" 
     ScrollViewer.HorizontalScrollMode="Enabled" 
       ScrollViewer.HorizontalScrollBarVisibility="Visible" IsItemClickEnabled="True" > 
     <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel x:Name="stak2" Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Vertical"> 
        <Image Source="{Binding Path=Image}" Width="500" Height="400"  /> 
        <TextBlock Text="{Binding Image_code}" FontSize="25" 
         Foreground="Gray"  Margin="180,0,0,0" /> 
        <Image x:Name="add" Source="/Assets/new copy.png" Height="40" Opacity="0.7"    
         Tapped="add_Tapped" /> 
      </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

App.xaml.cs содержит

public ctlist selectedct { get; set; } 

код:

ctlist ctlistid; 
     private void ctlist_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      var app = App.Current as App; 
      app.selectedct = (ctlist)ctlist.SelectedItem; 
      ctlistid = app.selectedct; 
      string no = ctlistid.Id.ToString(); 
      displayurl(no); // method for binding data to listview 

     } 

ответ

0

Если я понимаю ваш вопрос хорошо, вы хотите установить SelectedIt emIndex из списка List List to 0, а также привязать данные для второго ListView, отображающего данные для этой (выбранной) категории.

Вы можете сделать это следующим образом:

В случае LoadState после установки DataSource для ctlist установить индекс выбранного вручную, а затем вызвать Selection Changed событие. Как показано ниже:

private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e) 
    { 

     //TODO Set/Bind the data for Category List 
     // do the binding here 

     //Set the Selected Index 
     ctlist.SelectedIndex = 0; 

     //Manually call the selection changed event to set the data for the Categroy List 
     ctlist_SelectionChanged(null, null); 
    } 

Надеюсь, что это поможет.

+0

спасибо. вы можете дать мне решение по этому вопросу. http://stackoverflow.com/questions/25820812/image-tap-event-in-listview-windows-store-app –

0

Я основал свой ответ на этот вопрос, просто назначив это ключевое слово, чтобы установить выбранный по умолчанию элемент после предоставления источника данных в список ctlist.

private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e) 
      { 
      //TODO Set/Bind the data for Category List 
      ctlist.ItemsSource = lst; 

       this.ctlist.SelectedIndex = 0; 
      }