2013-08-03 91 views
0

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

语言是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)); 
    } 

我想在Windows应用商店中的应用程序添加到菜单项命令,但不能。帮我解决这个问题。

回答

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--这意味着使用两种不同的方法。

相关问题