项目没有';t出现在C#的ListBox中,但在XAML中是
本文关键字:ListBox 中是 XAML 但在 项目 | 更新日期: 2023-09-27 18:26:55
我对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();
我认为这是因为ListBox1.Items集合没有实现INotifyPropertyChanged/INotifyCollectionChanged。您可以创建一个可观察的集合并将其分配给ItemSource。
ObservableCollection<MyData> items = new ObservableCollection()
items.Add(new MyData());
ListBox1.ItemSource = items;
您没有看到它被添加的原因是列表框已经创建/填充,并且当您调用Items属性上的.Add方法时,Items集合不会通知列表框。