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)
我的错误在哪里?
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)