我对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();
答案 0 :(得分:2)
我认为这是因为ListBox1.Items集合没有实现INotifyPropertyChanged / INotifyCollectionChanged。您可以创建一个可观察的集合,并将其分配给ItemSource。
ObservableCollection<MyData> items = new ObservableCollection()
items.Add(new MyData());
ListBox1.ItemSource = items;
您没有看到它添加的原因是列表框已经创建/填充,当您在Items属性上调用.Add方法时,Items集合不会通知列表框。