c# - WPF 列表框绑定(bind)更新

标签 c# wpf xaml binding listbox

我是 WPF 的新手,我刚刚设法将特定类项的列表绑定(bind)到 ListBox。 ListBox 现在可以成功显示它们。这是一些代码,首先是类:

public class OrderItem
{
    public int Quantity { get; set; }
    public string Name { get; set; }
    public Double Price { get; set; }
}

一些虚拟数据和绑定(bind),这一切都发生在主程序的构造函数中:

List<OrderItem> currentOrderItems = new List<OrderItem>();
        currentOrderItems.Add(new OrderItem() { Quantity = 5, Name = "Test", Price = 5 });
        currentOrderItems.Add(new OrderItem() { Quantity = 15, Name = "Test test", Price = 6.66 });
        currentOrderItems.Add(new OrderItem() { Quantity = 1, Name = "Test 3", Price = 15.88 });
        listOrderItems.ItemsSource = currentOrderItems;

XAML:

<ListBox HorizontalAlignment="Left" Margin="150,27,0,23" Name="listOrderItems" Width="150" FontFamily="Times New Roman" FontSize="12">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Margin="4">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="{Binding Quantity}" FontWeight="Bold"  />
                    <TextBlock Grid.Column="1" Text="{Binding Name }" />
                    <TextBlock Grid.Column="2" Text="{Binding Price }" />
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

我的问题是如何更新 ListBox 以显示我要添加到包含数据(也称为 OrderItems)的列表中的新项目。如果我以任何方式添加、删除或修改列表,这不会反射(reflect)在列表框中。 谢谢!

最佳答案

对于您的情况,最好的方法是使用 mvvm 模式。 简单来说: 您的模型 OrderItem 应该实现接口(interface) INotifyPropertyChanged。 如果属性(property)发生变化,它会通知这件事。 然后创建 View 模型并将其设置在数据上下文中。在 viewModel 中添加带有 OrderItems 的 ObservableCollection,这个集合应该通知 View 关于它的变化。 有关更多信息,请阅读以下文章:MVVM

关于c# - WPF 列表框绑定(bind)更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906911/

相关文章:

c# - 我如何调试远程机器上的程序?

WPF 命令参数绑定(bind)问题

c# - 更新 ListView 项目值不起作用 Windows Phone 8.1

c# - 无法获取内部 XAML 绑定(bind)以针对依赖项属性工作

c# - 在 C# : what iteration is this? 中调试 foreach 循环

c# - 未记录的 Windows 内置 PDF 渲染器功能?

c# - 如果从同一个线程调用 Dispatcher.BeginInvoke 是否会将调用排队?

c# - 在不同的 ViewModel 之间共享数据

c# - WPF - 将字典中定义的样式与父控件中定义的样式混合

wpf - 如何创建棋盘格图案?