【问题标题】:Add application bar dynamically from a list从列表中动态添加应用程序栏
【发布时间】:2012-12-27 14:48:47
【问题描述】:

我必须在运行时添加应用程序栏我已经尝试了一些代码,但这对我不起作用,有人可以建议我一个解决方案吗? 这是我的代码

public void createObjectsForApplicationbar(List<Others> appbarList)
    {
        int i = 0;
        foreach (Others menus in appbarList)
        {                                                          
          UpdateAppbarButton(i, menus.menu_image, menus.name, true, ApplicationBarIconButton_Click);
          i++;
        }

    }

private void UpdateAppbarButton(int index, string uriString, string text, bool visibility, EventHandler handler)
    {
        ApplicationBarIconButton button1 = null;
        this.ApplicationBar = new ApplicationBar();
        this.ApplicationBar.IsVisible = true;
        this.ApplicationBar.Opacity = 1;
        this.ApplicationBar.IsMenuEnabled = true;
        if (this.ApplicationBar.Buttons.Count > index)
        {
            button1 = this.ApplicationBar.Buttons[index] as ApplicationBarIconButton;

            this.ApplicationBar.Buttons.Remove(button1);

            if (visibility == true)
            {
                button1 = new ApplicationBarIconButton(new Uri(uriString, UriKind.RelativeOrAbsolute));
                button1.Text = text;
                button1.Click += handler;
                this.ApplicationBar.Buttons.Insert(index, button1);
            }
        }

        else

        {
            if (visibility == true)
            {
                button1 = new ApplicationBarIconButton(new Uri(uriString, UriKind.RelativeOrAbsolute));
                button1.Text = text;
                button1.Click += handler;
                this.ApplicationBar.Buttons.Add(Buttons[text]);
            }
        }


    }

当我运行此代码时,即使列表中有 8 个项目,我也只有一个按钮作为输出。我从 stackoverflow 获得此代码

【问题讨论】:

    标签: c# windows-phone-7 windows-phone-7.1 windows-phone-8 application-bar


    【解决方案1】:

    您不应该在每次添加按钮时都创建新的 ApplicationBar

    删除这一行:

    this.ApplicationBar = new ApplicationBar();
    

    还有

    this.ApplicationBar.Buttons.Add(Buttons[text]);
    

    错了。您在此代码块中创建新按钮。所以你应该添加这个按钮。

    if (visibility == true)
    {
        button1 = new ApplicationBarIconButton(new Uri(uriString, UriKind.RelativeOrAbsolute));
        button1.Text = text;
        button1.Click += handler;
        this.ApplicationBar.Buttons.Add(button1);
    }
    

    【讨论】:

    • 好的,但我得到了一个空引用@line this.ApplicationBar.Buttons.Add(Buttons[text]);但是 this.ApplicationBar.Buttons 不为空
    • @Sujiz,你想用这个this.ApplicationBar.Buttons.Add(Buttons[text]);做什么?我给了正确的版本,你为什么改变它? :)
    • @Dmitry Dovgopoly 我已经尝试过你的代码,但我没有任何应用程序栏。是否需要调用任何其他函数来显示应用程序栏?
    猜你喜欢
    • 1970-01-01
    • 2013-05-19
    • 2022-08-17
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多