无法在Windows手机中的列表中添加数据

时间:2013-10-23 12:44:44

标签: c# windows-phone-7

我使用列表框显示项目列表,下面给出了XAML代码,

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ListBox x:Name="List" HorizontalAlignment="Left" Height="612" Margin="6,7,0,0" VerticalAlignment="Top" Width="443" SelectionChanged="List_SelectionChanged_1">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Width="400" Height="50">
                        <TextBlock x:Name="tbName" Width="400" Height="44" FontSize="22" FontWeight="Bold" Text="{Binding Name}" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
</Grid>

我只是通过以下C#代码填充列表,

foreach (var item in categoryDetails.Category)
        {
           CategoryDisplay data = new CategoryDisplay();
           data.Name = item.accountName;
           data.Id = item.accountID;
           this.List.Items.Add(data);
        }

一切顺利,直到最后一步,

this.List.Items.Add(data);

被执行,出现错误声明,

An exception of type 'System.UnauthorizedAccessException' occurred in System.Windows.ni.dll but was not handled in user code

可能是什么问题?我该怎么做才能纠正它?

2 个答案:

答案 0 :(得分:1)

听起来this.List.Items的收藏品尚未初始化。

当你声明你的集合时(让我们假设它是一个ObservableCollection,但我无法从你的代码中看到该类型应该是什么),那么你需要先将它初始化为new ObservableCollection<AccountDetail>()然后才能添加项目。

答案 1 :(得分:0)

根据文档,默认情况下应将System.Windows.Controls.ItemCollection.ItemCollection(您的Items)初始化为空集合。您是否在代码执行块中的某处将其设置为null?该属性在wp7中没有setter。

无论哪种方式,为控件分配数据源的更好,更有效的方法是一次创建集合,然后将其分配给控件ItemSource属性

 var data = new[] { 1, 2, 3, 4 };

 this.List.ItemsSource = from i in data select new CategoryDisplay() { id = i, Name = i.ToString(CultureInfo.InvariantCulture) };