Windows phone listbox动态添加列表项

当我们想做一个播放器的个人列表管理时可能需要动态的添加的一些“文件夹”,这时可能不是太清楚如何动态的进行添加。

首先我们我们先来看下前台:

 1 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
 2             <ListBox x:Name="myListBox">
 3                 <ListBox.ItemsPanel>
 4                     <ItemsPanelTemplate>
 5                         <toolkit:WrapPanel />
 6                     </ItemsPanelTemplate>
 7                 </ListBox.ItemsPanel>
 8                 <Grid Margin="5" Height="200"
 9                       Width="200" Background="#006ac1"
10                       Tap="AddnewItems">
11                     <TextBlock Text="添加新项"
12                                VerticalAlignment="Center" 
13                                HorizontalAlignment="Center"/>
14                 </Grid>
15             </ListBox>
16 </Grid>

 

前台里面直接显示了有一项叫做“添加新项”,当然也可以写在后台!需要注意的是:我们在添加listBox的Items时不能使用listBox.ItemsSource来设置listBox的Items,因为当我们使用了ItemsSource的时候listBox.Items.IsReadOnly属性值就为true,我们也就无法在接下来的时候进行动态添加Item项了。

接下来就后台:

        //添加项的方法
        void LoadListBox(int itemscount, string text)
        {
            for (int i = 0; i < itemscount; i++)
            {
                //myListBox.ItemsSource
                Grid layoutgrid = new Grid();
                layoutgrid.Height = layoutgrid.Width = 200;
                layoutgrid.Margin = new Thickness(5);
                layoutgrid.Background = new SolidColorBrush(Color.FromArgb(255, 0, 106, 193));

                TextBlock textblock = new TextBlock();
                textblock.VerticalAlignment = VerticalAlignment.Center;
                textblock.HorizontalAlignment = HorizontalAlignment.Center;
                if (text != string.Empty)
                {
                    textblock.Text = text;
                    layoutgrid.Children.Add(textblock);

                    //互换新添项与add项的位置
                    var tempgrid = myListBox.Items[myListBox.Items.Count - 1];
                    myListBox.Items[myListBox.Items.Count - 1] = layoutgrid;
                    //添加到列表中
                    myListBox.Items.Add(tempgrid);
                    //设置选中的项
                    myListBox.SelectedIndex = myListBox.Items.Count - 1;
                }
            }
        }

然后再前台所创建的Tap事件里进行如下操作:

        int i = 0;
        private void AddnewItems(object sender, System.Windows.Input.GestureEventArgs e)
        {
            i++;
            LoadListBox(1, "newItems" + i.ToString());
        }    

 

这样就可以了,效果图如下:

如有不明白的或是文中有错误的地方还请联系作者,谢谢!您的支持就是我最大的动力~~

posted @ 2013-07-25 11:40  Jonefriend  阅读(242)  评论(0编辑  收藏  举报