【问题标题】:Show applicationbar menu programmatically (wp7)以编程方式显示应用程序栏菜单(wp7)
【发布时间】:2010-12-16 19:57:44
【问题描述】:

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

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

你知道有什么解决办法吗?

我在想,如果上述方法不可行,可以模拟用户手指点击屏幕右下角来打开菜单。有什么想法吗?

提前感谢

【问题讨论】:

    标签: windows-phone-7


    【解决方案1】:

    可以更改应用程序栏菜单项以响应图标按钮单击,如下面的代码所示。

    没有办法通过代码强制打开(或关闭)应用栏。

    也无法模拟手指点击应用程序栏,因为这不是实际页面的一部分。请注意,如果设备处于横向,则任何点击都需要在右上角或左下角。

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

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

    【讨论】:

    • 太棒了。正是我想要的!
    【解决方案2】:

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

    【讨论】:

    • +1 无法打开用户必须执行的操作
    猜你喜欢
    • 2011-05-13
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多