以编程方式显示应用栏菜单(WP7)

3
我有一个WP7应用程序栏中带有一些按钮。当按下每个按钮时,我会更改应用程序栏菜单的menuItems。在此之后,我希望在按下应用程序栏按钮时自动打开菜单。
但似乎SDK不允许我这样做。您知道任何解决方法吗?
我在想,如果上述方法不可行,可以模拟用户在屏幕右下角点击以打开菜单。对此有什么想法吗?
谢谢!
2个回答

5

以下代码演示了如何在响应图标按钮点击时更改应用程序栏菜单项。

无法通过代码强制打开(或关闭)应用程序栏。

也不可能模拟对应用程序栏的手指点击,因为这不是实际页面的一部分。请注意,即使可能,任何点击也需要在设备处于横向方向时的右上角或左下角。

以下是演示更改菜单项的一些代码:

public partial class MainPage : PhoneApplicationPage
{
    private ApplicationBar appbar;
    public MainPage()
    {
        InitializeComponent();
        Loaded += new RoutedEventHandler(MainPage_Loaded);
    }

    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        appbar = new ApplicationBar();

        var ib1 = new ApplicationBarIconButton(new Uri("/images/one.png", UriKind.Relative)) { Text = "Option one" };
        ib1.Click += new EventHandler(ShowMenuOption1);

        var ib2 = new ApplicationBarIconButton(new Uri("/images/two.png", UriKind.Relative)) { Text = "Option two" };
        ib2.Click += new EventHandler(ShowMenuOption2);

        appbar.Buttons.Add(ib1);
        appbar.Buttons.Add(ib2);

        // Show menu option 1 as default
        DisplayMenuOption1();

        this.ApplicationBar = appbar;
    }

    private void DisplayMenuOption1()
    {
        appbar.MenuItems.Clear();

        var itemA = new ApplicationBarMenuItem("AAAA");
        var itemB = new ApplicationBarMenuItem("BBB");

        appbar.MenuItems.Add(itemA);
        appbar.MenuItems.Add(itemB);
    }

    private void DisplayMenuOption2()
    {
        appbar.MenuItems.Clear();

        var itemC = new ApplicationBarMenuItem("CCCC");
        var itemD = new ApplicationBarMenuItem("DDDD");

        appbar.MenuItems.Add(itemC);
        appbar.MenuItems.Add(itemD);
    }

    private void ShowMenuOption2(object sender, EventArgs e)
    {
        DisplayMenuOption2();
    }

    private void ShowMenuOption1(object sender, EventArgs e)
    {
        DisplayMenuOption1();
    }
}

太棒了。正是我在寻找的! - webdad3

2
据我所知,目前还没有公开这种能力的方式。在测试版中不可能实现,而且自那时以来我也没有注意到任何可以实现它的变化。您可以在他们的建议论坛上发表评论或在connect(vs/wpdt)上提出问题。

+1 用户无法打开,必须由用户执行该操作。 - Jeff Wilcox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接