0

我设计了一个带有添加按钮的 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 商店应用程序中。帮我解决这个问题。

4

1 回答 1

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

于 2013-08-04T12:59:36.417 回答