项目不会出现在C#中的ListBox中,而是出现在XAML中

时间:2013-08-08 10:52:39

标签: c# wpf xaml listbox

我对ListBox有点问题。 如果我按代码添加项目:

ListBox1.Items.Add(new MyData());
<ListBox Name="ListBox1" Height="Auto"
                    Style="{DynamicResource MyListBoxStyle}"/>

我的ListBox没有显示任何内容,而Items包含我添加的大量项目。

但是,如果我将一个项目直接放在我的XAML和c#中,MyData会正确显示:

ListBox1.Items.Add(new MyData());
<ListBox Name="ListBox1" Height="Auto"
                    Style="{DynamicResource MyListBoxStyle}">
                            <data:MyData/>
                        </ListBox>

如果我没有在XAML中放置项目以及如何更正它,任何人都知道为什么它无法正确显示?

提前谢谢你:)


[解决] 添加项目时,我的ListBox已经显示。因此,要解决此问题,只需要更新布局以通知ItemSource已更改:

ListBox1.UpdateLayout();

1 个答案:

答案 0 :(得分:2)

我认为这是因为ListBox1.Items集合没有实现INotifyPropertyChanged / INotifyCollectionChanged。您可以创建一个可观察的集合,并将其分配给ItemSource。

ObservableCollection<MyData> items = new ObservableCollection()

items.Add(new MyData());

ListBox1.ItemSource = items;

您没有看到它添加的原因是列表框已经创建/填充,当您在Items属性上调用.Add方法时,Items集合不会通知列表框。