0

[追加] ボタンのある Appbar を設計しました。ユーザーが追加ボタンをクリックすると、PopupMenu が開き、指定された 2 つのオプションが提供されます。それらに2つのコマンドをバインドしたい。いろいろ調べましたが、方法はたくさんあります。どうすればそれができるか教えてください。ユーザーがボタンをクリックしたときにポップアップを表示する必要があります。

言語は 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。つまり、2 つの異なる方法を使用することになります。

于 2013-08-04T12:59:36.417 に答える