Добавить панель приложений динамически из списка

Мне нужно добавить панели приложений во время выполнения. Я пробовал некоторые коды, и это не работает для меня. Может ли кто-нибудь предложить мне решение? Вот мой код

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


person Sujiz    schedule 25.12.2012    source источник


Ответы (1)


Вы не должны создавать новую панель приложений каждый раз, когда добавляете кнопку

удалите эту строку:

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);
}
person Dmitry Dovgopoly    schedule 25.12.2012
comment
хорошо, но я получил нулевую ссылку на строку @ this.ApplicationBar.Buttons.Add(Buttons[text]); но this.ApplicationBar.Buttons не равно null - person Sujiz; 26.12.2012
comment
@Sujiz, что ты пытался сделать с этим this.ApplicationBar.Buttons.Add(Buttons[text]);? Я дал правильную версию, почему вы ее изменили? :) - person Olter; 27.12.2012
comment
@Dmitry Dovgopoly, я пробовал ваш код, но у меня не было панели приложений. Нужно ли вызывать какую-либо дополнительную функцию, чтобы показать панель приложений? - person Sujiz; 28.12.2012