首页 > 解决方案 > 无法将可观察集合绑定到数据网格

问题描述

我是WPF的新手,所以请原谅我的无知。我在网上读到,为了绑定工作,可观察集合应该是公共财产。所以,这是我到目前为止所做的:

我有一个类,我在其中声明了 observable,如下所示:

public ObservableCollection<InventoryDto> invCollection { get; set; }
 public InventoryDto()
        {
            invCollection = new ObservableCollection<InventoryDto>();
        }


        public ObservableCollection<InventoryDto> observableList
        {
            get
            {
                return this.invCollection;
            }
            set
            {
                invCollection = value;
                OnPropertyChanged("observableList");
            }
        }

然后,在我看来,我有这样的绑定:

ItemsSource="{Binding observableList,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

在后面的视图代码(即 view.xamls.cs)中,我填充了 observable:

  foreach (var item in inventoryList)
            {

                invDto.invCollection.Add(new InventoryDto { location = item.location.Name, onHand = item.OnHand.ToString(), committed = item.committed.ToString() });


            }

但是,除非添加以下代码,否则我在网格中看不到任何数据:

 InventoryDataGrid.ItemsSource = invDto.observableList;

首先,我发现在后面的代码中添加这段代码很奇怪,而我已经在 xaml 中指定了 ItemsSource。其次,此代码填充网格。但是当我从 db 中删除一行时,尽管我指定了 BindingMode = TwoWay,但该行并没有在网格中被删除。

请让我知道我在这里缺少什么。

标签: wpfdata-bindingwpfdatagrid

解决方案


推荐阅读