ListBox只显示一个项目

N.D*_*N.D 2 .net c# wpf xaml listbox

我有一个ListBox带字符串的类.每次用户单击应用程序中的添加按钮时,我都会创建该类的新实例并将其添加到绑定到的列表中ListBox.第一次单击添加按钮时,列表框显示第一个项目,但下次没有显示两个项目.

XAML - 这是ListBox:

<ListBox Name="ListBox_BinsRegion" Height="181" Margin="233,16,6,94" Width="253" Background="Transparent" BorderThickness="1" BorderBrush="Black" ScrollViewer.VerticalScrollBarVisibility="Auto" ItemsSource="{Binding}"/> 
Run Code Online (Sandbox Code Playgroud)

背后的代码:

List<Class_ListViewItem> List_ListBoxItems = new List<Class_ListViewItem>();

 private void Button_Add_Click(object sender, RoutedEventArgs e)
    {
        Class_ListViewItem item = new Class_ListViewItem();
        item.WH = this.comboBox_WareHouseBinsRegionDefinition.SelectedItem.ToString();
        item.XXFrom = textBox_XXFrom.Text;
        item.XXTo = textBox_XXTo.Text;
        item.YYFrom = textBox_YYFrom.Text;
        item.YYTo = textBox_YYTO.Text;
        item.Z = textBox_ZFrom.Text;

        List_ListBoxItems.Add(item);

        ListBox_BinsRegion.DataContext = List_ListBoxItems;
    }
Run Code Online (Sandbox Code Playgroud)

我的错误在哪里?

Bas*_*Bas 6

WPF不知道您的收藏何时发生变化.问题出在这里:

List<Class_ListViewItem> List_ListBoxItems = new List<Class_ListViewItem>();
Run Code Online (Sandbox Code Playgroud)

你需要将列表更改为

ObservableCollection<Class_ListViewItem> List_ListBoxItems = new ObservableCollection<Class_ListViewItem>();
Run Code Online (Sandbox Code Playgroud)

ObservableCollection(System.Collections.ObjectModel)在更改集合时抛出一个事件,以便WPF可以更新列表框.

此外,您可以删除以下行,或将其移动到控件的构造函数.

ListBox_BinsRegion.DataContext = List_ListBoxItems;
Run Code Online (Sandbox Code Playgroud)