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

时间:2010-12-16 10:24:29

标签: windows-phone-7

我在应用程序栏中有一些带有一些按钮的wp7。 按下每个按钮后,我更改应用程序栏菜单的menuItems。 在此之后,我想在按下应用程序栏按钮时自动打开菜单。

但似乎SDK不允许我这样做。

你知道有什么工作吗?

我在想,如果以上是不可能的,要模拟用户手指点击屏幕右下角的菜单。有什么想法?

提前完成

2 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:2)

据我所知,此功能尚未曝光。在测试期间这是不可能的,我没有注意到任何改变,因为这将允许它。您可以随时评论他们的建议论坛或在connect(vs / wpdt)上提出它。