Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从列表中动态添加应用程序栏_C#_Windows Phone 7_Windows Phone 7.1_Windows Phone 8_Application Bar - Fatal编程技术网

C# 从列表中动态添加应用程序栏

C# 从列表中动态添加应用程序栏,c#,windows-phone-7,windows-phone-7.1,windows-phone-8,application-bar,C#,Windows Phone 7,Windows Phone 7.1,Windows Phone 8,Application Bar,我必须在运行时添加应用程序栏。我尝试了一些代码,但这些代码对我不起作用。有人能给我建议一个解决方案吗? 这是我的密码 public void createObjectsForApplicationbar(List<Others> appbarList) { int i = 0; foreach (Others menus in appbarList) {

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

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


    }
public void createObjectsForApplicationbar(列表appbarList)
{
int i=0;
foreach(appbarList中的其他菜单)
{                                                          
UpdateAppbarButton(i,menus.menu图像,menus.name,true,ApplicationBarIconButton\u单击);
i++;
}
}
私有void UpdateAppbarButton(int索引、字符串URI字符串、字符串文本、布尔可见性、EventHandler)
{
ApplicationBarIconButton按钮1=null;
this.ApplicationBar=新的ApplicationBar();
this.ApplicationBar.IsVisible=true;
this.ApplicationBar.Opacity=1;
this.ApplicationBar.IsMenuEnabled=true;
if(this.ApplicationBar.Buttons.Count>索引)
{
button1=此.ApplicationBar.Buttons[索引]作为ApplicationBarIconButton;
此.ApplicationBar.Buttons.Remove(按钮1);
如果(可见性==true)
{
button1=新应用程序BariconButton(新Uri(uriString,UriKind.RelativeOrAbsolute));
按钮1.文本=文本;
按钮1.单击+=处理程序;
这个.ApplicationBar.Buttons.Insert(索引,button1);
}
}
其他的
{
如果(可见性==true)
{
button1=新应用程序BariconButton(新Uri(uriString,UriKind.RelativeOrAbsolute));
按钮1.文本=文本;
按钮1.单击+=处理程序;
这个.ApplicationBar.Buttons.Add(Buttons[text]);
}
}
}

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

获得此代码。您不应该每次添加按钮时都创建新的应用程序栏

删除此行:

this.ApplicationBar = new ApplicationBar();

这是错误的。您可以在此代码块中创建新按钮。所以你应该加上这个按钮

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]);但这个.ApplicationBar.Buttons不是null@Sujiz,您尝试如何处理此
此.ApplicationBar.Buttons.Add(按钮[text])?我给出了正确的版本,为什么要更改它?:)@Dmitry Dovgopoly我已经尝试了你的代码,但是我没有得到任何应用程序条。是否需要调用任何附加函数来显示应用程序条?
if (visibility == true)
{
    button1 = new ApplicationBarIconButton(new Uri(uriString, UriKind.RelativeOrAbsolute));
    button1.Text = text;
    button1.Click += handler;
    this.ApplicationBar.Buttons.Add(button1);
}