windows 8 metro app 中 选中某个 item 弹出 appbar 的方法

最近写的程序想模拟win8中的右键单击某个磁贴就会弹出一个appbar来当作菜单设置的功能,就是类似如下的效果:


查了好久没弄好,最终让我试出来了,只需要更改一下属性即可。

以下是我的appbar的初始xaml代码:

<Page.BottomAppBar>
        <AppBar Background="#FF00B7EF" BorderBrush="#FF00B7EF" Name="myAppBar">
            <AppBar.Content>
                <Grid>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                        <Button  Visibility="Collapsed" Name="remove" AutomationProperties.Name="删除该项目" Style="{StaticResource RemoveAppBarButtonStyle}" Click="remove_Click"/>
                        <Button Visibility="Collapsed" Name="removeAll" AutomationProperties.Name="删除所有项目" Style="{StaticResource RemoveAppBarButtonStyle}" Click="removeAll_Click"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                        <Button Name="about" AutomationProperties.Name="关于" Style="{StaticResource HomeAppBarButtonStyle}" Click="about_Click"></Button>
                        <Button Name="setting" AutomationProperties.Name="设置" Style="{StaticResource SettingsAppBarButtonStyle}" Click="setting_Click"></Button>
                        <Button Name="export" AutomationProperties.Name="导出为文本文件" Style="{StaticResource DownloadAppBarButtonStyle}" Click="export_Click"></Button>
                    </StackPanel>
                </Grid>
                
            </AppBar.Content>
        </AppBar>
    </Page.BottomAppBar>

代码中包含五个按钮,其中有两个是暂时不可见的,我要实现的功能是当右键单击(触发selectionchanged事件)某个Grid的某个item的时候,马上弹出appbar,进行相应的操作。


当触发selectionchanged事件的时候,如果选中了一个那么

indexNum = IndexView.SelectedIndex;

就会得到一个索引值,如果取消选中就会得到-1,所以在得到非-1值的时候,让remove和removeAll两个按钮可见,并让整个appbar可见(isOpen=true);在-1的时候,让其不可见,综上,只要加入这么几行代码:

if (indexNum != -1)
           {
               remove.Visibility = Windows.UI.Xaml.Visibility.Visible;
               removeAll.Visibility = Windows.UI.Xaml.Visibility.Visible;
               myAppBar.IsOpen = true;
           }
           else {
               remove.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
               removeAll.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
           }




相关c#代码如下:

        int indexNum = 0;
        private void remove_Click(object sender, RoutedEventArgs e)
        {

            myIndex.RemoveAt(indexNum);
            remove.Visibility = Windows.UI.Xaml.Visibility.Visible;
            removeAll.Visibility = Windows.UI.Xaml.Visibility.Visible;

        }

        private  void select(object sender, SelectionChangedEventArgs e)
        {
           indexNum = IndexView.SelectedIndex;
           

           if (indexNum != -1)
           {
               remove.Visibility = Windows.UI.Xaml.Visibility.Visible;
               removeAll.Visibility = Windows.UI.Xaml.Visibility.Visible;
               myAppBar.IsOpen = true;
           }
           else {
               remove.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
               removeAll.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
           }
           

        }

        private async void removeAll_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog md = new MessageDialog("确定删除所有日记?");
            md.Commands.Add(new UICommand("确定", command =>
            {
                myIndex.Clear();

            }));
            md.Commands.Add(new UICommand("取消", command =>
            {
               //do nothing              
            }));

            await md.ShowAsync();

            
           
        }



最终效果:

在未选中之前:



选中Grid中的item之后:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值