C# 如何解决GridViewItem c(UWP)的SelectedIndex中的延迟
第一次后宇我有一个gridview,它向用户提供4个选项。选择项0将显示一个隐藏的子菜单,该子菜单与该选项相关,而其他项具有不同的功能。为了选择正确的索引,我必须选择两次。SelectedIndex从-1开始,根据文档,这是预期的行为,非常合理。如果我使用索引0初始化视图,则该项的边框将高亮显示,就像它被选中一样,只需单击一次即可激活菜单,但如果我单击任何其他项,则需要单击两次才能注册这些项 例如,如果选择了索引0,则选择索引1,则显示索引0;如果再次选择索引0,则显示索引1C# 如何解决GridViewItem c(UWP)的SelectedIndex中的延迟,c#,xaml,gridview,uwp,selectedindex,C#,Xaml,Gridview,Uwp,Selectedindex,第一次后宇我有一个gridview,它向用户提供4个选项。选择项0将显示一个隐藏的子菜单,该子菜单与该选项相关,而其他项具有不同的功能。为了选择正确的索引,我必须选择两次。SelectedIndex从-1开始,根据文档,这是预期的行为,非常合理。如果我使用索引0初始化视图,则该项的边框将高亮显示,就像它被选中一样,只需单击一次即可激活菜单,但如果我单击任何其他项,则需要单击两次才能注册这些项 例如,如果选择了索引0,则选择索引1,则显示索引0;如果再次选择索引0,则显示索引1 p
private void GridView_ItemClick(object sender, ItemClickEventArgs e)
{
int index = StudyTypeGrid.SelectedIndex;
var selected = e.ClickedItem;
System.Diagnostics.Debug.WriteLine("Index: " + index);
System.Diagnostics.Debug.WriteLine("Item: " + selected.ToString());
if (selected != null && index == 0)
{
HiddenOptionPanel.Visibility = Visibility.Visible;
}else
{
HiddenOptionPanel.Visibility = Visibility.Collapsed;
}
}
下面是Xaml的一部分:
<GridView x:Name="StudyTypeGrid" HorizontalAlignment="Center" Margin="0,20,0,0" ItemClick="GridView_ItemClick"
IsItemClickEnabled="True" IsDoubleTapEnabled="False">
<GridViewItem Height="200" Width="200" >
<StackPanel Width="200">
<StackPanel Height="100">
<TextBlock Text="Option 1" FontSize="24" TextWrapping="WrapWholeWords"
HorizontalAlignment="Center" TextAlignment="Center" Margin="0,20,0,0" />
</StackPanel>
<StackPanel Background="LightGray" Height="100">
<TextBlock Text="Description"
TextWrapping="WrapWholeWords" TextAlignment="Center" VerticalAlignment="Center" />
</StackPanel>
</StackPanel>
</GridViewItem>
我还尝试将IsDoubleTapEnabled设置为false,并尝试引用所选对象而不是所选索引。orignal If语句只有index==0,但保留了selected以显示我也尝试了该路由。从左到右再返回,我得到以下输出:
索引:-1
项目:Windows.UI.Xaml.Controls.StackPanel
索引:0
项目:Windows.UI.Xaml.Controls.StackPanel
索引:1
项目:Windows.UI.Xaml.Controls.StackPanel
索引:2
项目:Windows.UI.Xaml.Controls.StackPanel
索引:3
项目:Windows.UI.Xaml.Controls.StackPanel
索引:2
项目:Windows.UI.Xaml.Controls.StackPanel
索引:1
项目:Windows.UI.Xaml.Controls.StackPanel
此视图是从一个页面启动的,该页面也有一个gridview,并且以相同的方式响应。我缺少什么?触发ItemClick事件时,当前选定的项目没有更改,因此其SelectedIndex的值仍然是以前选定的索引,这是一种预期行为。如果要显示正确的SelectedIndex,可以订阅该事件。在此事件中,SelectedIndex是当前选定的索引
private void StudyTypeGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int index = StudyTypeGrid.SelectedIndex;
var selected = e.AddedItems[0];
System.Diagnostics.Debug.WriteLine("Index: " + index);
System.Diagnostics.Debug.WriteLine("Item: " + selected.ToString());
if (selected != null && index == 0)
{
HiddenOptionPanel.Visibility = Visibility.Visible;
}
else
{
HiddenOptionPanel.Visibility = Visibility.Collapsed;
}
}
触发ItemClick事件时,当前选定的项目没有更改,因此其SelectedIndex的值仍然是先前选定的索引,这是一种预期行为。如果要显示正确的SelectedIndex,可以订阅该事件。在此事件中,SelectedIndex是当前选定的索引
private void StudyTypeGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int index = StudyTypeGrid.SelectedIndex;
var selected = e.AddedItems[0];
System.Diagnostics.Debug.WriteLine("Index: " + index);
System.Diagnostics.Debug.WriteLine("Item: " + selected.ToString());
if (selected != null && index == 0)
{
HiddenOptionPanel.Visibility = Visibility.Visible;
}
else
{
HiddenOptionPanel.Visibility = Visibility.Collapsed;
}
}
非常感谢你!!非常感谢你!!