Windows应用商店中的弹出菜单命令

时间:2013-08-03 07:36:56

标签: c# windows-8 menu popup

我设计了一个带有添加按钮的Appbar。当用户单击添加按钮时,PopupMenu将打开并提供给定的两个选项。我想绑两个命令。我搜索了很多,有很多不同的方式。有人可以告诉我我该怎么做。我需要在用户点击按钮时显示弹出窗口。

语言是XAML / C#

    private async void AddTaskButtonClick(object sender, RoutedEventArgs e)
    {
    PopupMenu menu = new PopupMenu();
    menu.Commands.Add(new UICommand("Everyday Task"));             
    menu.Commands.Add(new UICommand("Onetime Task"));
    await menu.ShowAsync(new Point(10,680));
    }

我想向MenuItem添加命令但不能在Windows应用商店中添加。帮助我。

1 个答案:

答案 0 :(得分:1)

这是一种方法,但它不是最好的(应该使用绑定):

添加UICommand时,您必须设置其他属性,例如下面的代码。我已经利用了你的代码,并且在将PopUpMenu定位在计算坐标上的问题上进行了一些修改,如下所示:

private async void AddTaskButtonClick(object sender, RoutedEventArgs e)
{
    PopupMenu menu = new PopupMenu();

    menu.Commands.Add(new UICommand
                          {
                              Id = 1,
                              Label = "Everyday Task",
                              Invoke = DoTasks 
                          });  
    menu.Commands.Add(new UICommand
                          {
                              Id = 2,
                              Label = "Onetime Task",
                              Invoke = DoTasks 
                          });
    //Determine position of where to show the PopUp :
    var pointTransform = ((Button) sender).TransformToVisual(Window.Current.Content);
    var screenCoords = pointTransform.TransformPoint(new Point(50, 10)); 
    //50, 10 are Horizontal and Vertical offsets, you should customize them as you wish.            

    await menu.ShowAsync(screenCoords);
}

之后,您将需要DoTasks方法:

private void DoTasks(IUICommand command)
{
    var currentId = (int) command.Id;

    switch(currentId)
    {
        case 1 :
        {
        //your Everyday Task code here
        }
        case 2 :
        {
        //your OneTime Task code here
        }
    }
}

你也可以使用不同的Invoke - 这意味着,使用两种不同的方法。