【发布时间】:2020-11-10 03:13:14
【问题描述】:
第一个帖子哇! - 我有一个向用户提供 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,并尝试引用所选对象而不是所选索引。原始的 If 语句只有索引 == 0,但留下了“已选择”以显示我也尝试过该路线。从左到右再返回,我得到以下输出:
索引:-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 的页面启动的,并且以同样的方式响应。我错过了什么?
【问题讨论】:
标签: c# xaml gridview uwp selectedindex