MenuFlyout-为项目编码

时间:2018-08-28 14:05:30

标签: c# events uwp flyout

我刚刚创建了一个小弹出窗口:

MenuFlyout flyout = new MenuFlyout();
flyout.Items.Add(new X_UWP_App.Models.MyMenuFlyoutItem() { Text = "Copy" });
flyout.ShowAt(rect);

我可以标记文本。在标记文本之后,该弹出按钮将显示为“复制”。 现在我想知道如何在“复制”后面添加一些代码?

我在想这样的事情,但这似乎不正确。

public void onFlyoutItemClick(object sender, FlyoutItemClickEventArgs e)
{
    var dataPackage = new DataPackage();
    dataPackage.SetText(SelGetText());
    Clipboard.SetContent(dataPackage);
}

------上面的部分得到了回答。在此行下是我的下一个相关问题和答案----

                var dataPackage = new DataPackage();
                dataPackage.SetText(m_view.vSelGetText());
                Clipboard.SetContent(dataPackage);

这是这三行的真实外观。请注意,m_view.vSelGetText()不起作用。未在此类中分配m_view。我怎么能做到这一点,所以分配它。因为现在如果我单击“复制”,它将复制“复制”。这是我得到的错误:“非静态字段,方法或属性x.m_view需要对象引用”

1 个答案:

答案 0 :(得分:1)

您的代码看起来正确,已经实现了MyMenuFlyoutItem,可以像下面这样在类中添加onFlyoutItemClick

class MyMenuFlyoutItem : MenuFlyoutItem
{
    public MyMenuFlyoutItem()
    {
        this.Click += MyMenuFlyoutItem_Click;
    }

    private void MyMenuFlyoutItem_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
    {
        var dataPackage = new DataPackage();
        dataPackage.SetText(SelGetText());
        Clipboard.SetContent(dataPackage);
    }

    private string SelGetText()
    {
        return this.Text;
    }
}