Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解决GridViewItem c(UWP)的SelectedIndex中的延迟_C#_Xaml_Gridview_Uwp_Selectedindex - Fatal编程技术网

C# 如何解决GridViewItem c(UWP)的SelectedIndex中的延迟

C# 如何解决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

第一次后宇我有一个gridview,它向用户提供4个选项。选择项0将显示一个隐藏的子菜单,该子菜单与该选项相关,而其他项具有不同的功能。为了选择正确的索引,我必须选择两次。SelectedIndex从-1开始,根据文档,这是预期的行为,非常合理。如果我使用索引0初始化视图,则该项的边框将高亮显示,就像它被选中一样,只需单击一次即可激活菜单,但如果我单击任何其他项,则需要单击两次才能注册这些项

例如,如果选择了索引0,则选择索引1,则显示索引0;如果再次选择索引0,则显示索引1

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

非常感谢你!!非常感谢你!!