无法在Xaml中将SelectedIndex ="0"设置为ListView(Windows应用商店应用)

yal*_*tta 5 c# xaml listview selectedindex windows-store-apps

我有2个ListViews和一个TextBlock.第一个ListView1包括按字母顺序排列的字母.第二个ListView2包含以所选字母开头的单词(在ListView1中).当我从ListView1中选择一个字母,然后单击ListView2中加载的单词时,我想在TextBlock中获得该单词的定义.

这是我的Xaml:

<ListView
               Width="510"
               x:Name="ListView1"
               ItemsSource="{Binding}" 
               Background="White"
               Foreground="Black"
               TabIndex="1"
               Margin="-7,8,0,0"
               IsSwipeEnabled="False"

               SelectionChanged="ItemListView_SelectionChanged"
               Grid.Row="1"
               HorizontalAlignment="Left">
               <ListView.ItemTemplate>
                   <DataTemplate>
                       <StackPanel>
                           <TextBlock Grid.Row="0"
                           Text="{Binding glossary_letter}"
            Margin="10,0,0,0" 
            TextWrapping="Wrap"
                           Foreground="Black"
            FontSize="24"
            FontWeight="SemiBold"
            VerticalAlignment="Center"/>
                       </StackPanel>
                   </DataTemplate>
               </ListView.ItemTemplate>
           </ListView>
           <ListView  Width="361"
               x:Name="ListView2"
               Background="White"
               Foreground="Black"
               Margin="425,8,230,0"
               Grid.Row="1"
               HorizontalAlignment="Center"
               ItemsSource="{Binding}"
               SelectionChanged="itemListView2_SelectionChanged">
               <ListView.ItemTemplate>
                   <DataTemplate>
                       <StackPanel>
                           <TextBlock Grid.Row="1"
            TextWrapping="Wrap"
                           Foreground="Black"
                           Text="{Binding}"       
            FontSize="24"
            FontWeight="SemiBold"
            VerticalAlignment="Center"/>
                       </StackPanel>
                   </DataTemplate>
               </ListView.ItemTemplate>
           </ListView>
           <StackPanel HorizontalAlignment="Right"
                       Background="White"
                       Width="580"
                       Margin="0,10,0,0" Grid.Row="1" Grid.ColumnSpan="2">
               <TextBlock x:Name="defBlock" Foreground="Black" Text="{Binding glossary_definition}"></TextBlock>
           </StackPanel>
Run Code Online (Sandbox Code Playgroud)

如果我第一次单击一个字母(ListView1)然后单击一个单词(ListView2),它会显示我的定义.然而,第二次我点击一个字母,它给了我一个OutOfRange错误的地方ListView2.SelectedIndex = -1

这是我的C#代码:

private void ListView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
       {           
           ListView2.ItemsSource = arrayW[ListView1.SelectedIndex];          
       }
   private void ListView2_SelectionChanged(object sender, SelectionChangedEventArgs e)
   {
     defBlock.Text = arrayDef[ListView1.SelectedIndex][ListView2.SelectedIndex];       
   }
Run Code Online (Sandbox Code Playgroud)

知道我在做什么错误吗?

Tal*_*oui 2

private void ListView2_SelectionChanged(object sender, SelectionChangedEventArgs e)
   {

    if(ListView2.SelectedIndex >= 0){
         defBlock.Text = arrayDef[ListView1.SelectedIndex][ListView2.SelectedIndex];       
    }
    else
    {
         defBlock.Text = arrayDef[ListView1.SelectedIndex][0];//set default selected word.. 
    }
}
Run Code Online (Sandbox Code Playgroud)