项目没有';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();

项目没有';t出现在C#的ListBox中,但在XAML中是

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

ObservableCollection<MyData> items = new ObservableCollection()
items.Add(new MyData());
ListBox1.ItemSource = items;

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