【问题标题】:MenuFlyout - code an ItemMenuFlyout - 对项目进行编码
【发布时间】:2019-02-03 04:53:27
【问题描述】:

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

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);

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

【问题讨论】:

  • 它有什么不妥之处?
  • 我找不到“FlyoutItemClickEventArgs”替代的事件。我什至不确定它是否像这样工作。
  • 快速建议。试试Tapped 事件。
  • 尝试了 public void onFlyoutItemClick(object sender, FTappedEventHandler e) 和 public void onFlyoutItemClick(object sender, TappedRoutedEventArgs e)。两者都没有工作。我可能误会了你,如果是这样的话,对不起。

标签: c# events uwp flyout


【解决方案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;
    }
}

【讨论】:

  • 嗨。这解决了,但我现在有一个新问题(我的错,我没有给你足够的代码)。我将为此编辑我的主要帖子。
  • 这不只是将剪贴板设置为单词Copy...吗?
  • 如果您更改构造函数以接受字符串作为剪贴板内容,您可以将其设置为在构造时分配给的类属性并放弃SelGetText 方法,然后将其与您的剪贴板内容的新字符串属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
相关资源
最近更新 更多