0

我正在开发用于触摸设备的 XAML/C# 中的 Windows 8.1 应用程序,并遇到以下问题:我有一个 GridView,其中显示了一个项目列表,这些项目的样式为图块。当我点击其中一个图块时,我会打开一个不同的页面,其中使用 GridView 上的以下属性显示该项目的详细视图:

IsItemClickEnabled="True"
ItemClick="itemGridView_ItemClick"

现在我想模仿 Windows 在“开始”屏幕上使用的行为,当您按住特定磁贴时,它会被选中,AppBar 会显示并为该特定项目提供一些命令。每个项目的命令总是相同的,但显然这些项目不是。当未选择任何项目时,AppBar 会显示与单个项目无关的不同命令。在第一次加载屏幕时,不应选择任何内容。

我怎样才能实现这种行为?

4

1 回答 1

4

可能有更优雅的方法可以做到这一点,但我将为您提供这种有效的方式,然后您可以将其创建为行为或其他方式。

您将需要处理 gridview 上的 Hold 事件,如下所示:

private void gridView_Holding(object sender, Windows.UI.Xaml.Input.HoldingRoutedEventArgs e)
{
    if (e.HoldingState == HoldingState.Completed)
    {
        gridView.IsCustomising = true;
        var heldItem = (e.OriginalSource as FrameworkElement).DataContext as Event;
        gridView.SelectedItem = heldItem;
    }
    e.Handled = true;
}

注意:我已经扩展了开箱即用的 gridview 以显示自定义样式,如 win 8.1 注意:在此示例中,我的 gridview 中的项目类型为 Event 类型,而您的将是您绑定的任何类型

您显然还需要通过您的视图模型创建您的应用栏和绑定,当在网格视图中选择一个项目时,哪些命令是可见的。

希望有帮助。

于 2014-05-01T05:52:47.537 回答