Добавить панель приложения динамически из списка
Я должен добавить панели приложений во время выполнения, я попробовал некоторые коды, и это не работает для меня, может кто-нибудь предложить мне решение? Вот мой код
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 элементов. Я получил этот код из stackru
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);
}