无法设置的SelectedIndex =" 0 QUOT;在XAML到ListView控件(Windows应用商店的应用程序) [英] Cannot set SelectedIndex="0" in Xaml to ListView (Windows Store App)

查看:178
本文介绍了无法设置的SelectedIndex =" 0 QUOT;在XAML到ListView控件(Windows应用商店的应用程序)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2列表视图和一个TextBlock。第一ListView1的包括按字母顺序排列的字母。和第二ListView2包括与选定的字母(在ListView1的)开始的话。当我选择从ListView1的一个字母,然后单击在ListView2加载一个字,我想这个词的定义在TextBlock中。

这是我的XAML:

 < ListView控件
               WIDTH =510
               X:NAME =ListView1的
               的ItemsSource ={结合}
               背景=白
               前景=黑
               的TabIndex =1
               保证金= - 7,8,0,0
               IsSwipeEnabled =假               的SelectionChanged =ItemListView_SelectionChanged
               Grid.Row =1
               的Horizo​​ntalAlignment =左>
               < ListView.ItemTemplate>
                   <&DataTemplate的GT;
                       <&StackPanel的GT;
                           &所述; TextBlock的Grid.Row =0
                           文本={结合glossary_letter}
            保证金=10,0,0,0
            TextWrapping =包装
                           前景=黑
            字号=24
            粗细=SemiBold
            VerticalAlignment =中心/>
                       < / StackPanel的>
                   < / DataTemplate中>
               < /ListView.ItemTemplate>
           < /&的ListView GT;
           < ListView的宽度=361
               X:NAME =ListView2
               背景=白
               前景=黑
               保证金=425,8,230,0
               Grid.Row =1
               的Horizo​​ntalAlignment =中心
               的ItemsSource ={结合}
               的SelectionChanged =itemListView2_SelectionChanged>
               < ListView.ItemTemplate>
                   <&DataTemplate的GT;
                       <&StackPanel的GT;
                           &所述; TextBlock的Grid.Row =1
            TextWrapping =包装
                           前景=黑
                           文本={结合}
            字号=24
            粗细=SemiBold
            VerticalAlignment =中心/>
                       < / StackPanel的>
                   < / DataTemplate中>
               < /ListView.ItemTemplate>
           < /&的ListView GT;
           < StackPanel中的Horizo​​ntalAlignment =右
                       背景=白
                       WIDTH =580
                       余量=0,10,0,0Grid.Row =1Grid.ColumnSpan =2>
               < TextBlock的X:名称=defBlock前景=黑色文本={结合glossary_definition}>< / TextBlock的>
           < / StackPanel的>

如果我点击第一次上一个字母(ListView1的),然后就一个字(ListView2)它让我的定义。然而,第二次我点击一个字母,它给了我一个 OutOfRange 错误的 ListView2.SelectedIndex = -1

这是我的C#code:

 私人无效ListView1_SelectionChanged(对象发件人,SelectionChangedEventArgs E)
       {
           ListView2.ItemsSource = arrayW [ListView1.SelectedIndex]
       }
   私人无效ListView2_SelectionChanged(对象发件人,SelectionChangedEventArgs E)
   {
     defBlock.Text = arrayDef [ListView1.SelectedIndex] [ListView2.SelectedIndex];
   }

任何想法是什么我做了错误?


解决方案

 私人无效ListView2_SelectionChanged(对象发件人,SelectionChangedEventArgs E)
   {    如果(ListView2.SelectedIndex> = 0){
         defBlock.Text = arrayDef [ListView1.SelectedIndex] [ListView2.SelectedIndex];
    }
    其他
    {
         defBlock.Text = arrayDef [ListView1.SelectedIndex] [0]; //设置默认选中的话..
    }
}

I have 2 ListViews and a TextBlock. The first ListView1 includes letters in Alphabetical order. And the second ListView2 includes the words that start with the selected letter (in ListView1). When I choose a letter from ListView1 and then click on a word loaded in ListView2, I want to get the definition of this word in a TextBlock.

This is my 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>

If I click the first time on a letter (ListView1) then on a word (ListView2) it shows me the definition. However the second time I click on a letter, it gives me an OutOfRange Error where the ListView2.SelectedIndex = -1

This is my C# code:

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];       
   }

Any idea what is the error I am doing?

解决方案

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.. 
    }
}

这篇关于无法设置的SelectedIndex =&QUOT; 0 QUOT;在XAML到ListView控件(Windows应用商店的应用程序)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆