无法设置的SelectedIndex =" 0 QUOT;在XAML到ListView控件(Windows应用商店的应用程序) [英] Cannot set SelectedIndex="0" in Xaml to ListView (Windows Store App)
问题描述
我有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
的HorizontalAlignment =左>
< 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
的HorizontalAlignment =中心
的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中的HorizontalAlignment =右
背景=白
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屋!