Как динамически привязать List <object>к DataGrid в WPF? - PullRequest
3 голосов
/ 05 октября 2011

Я хочу динамически привязать список к сетке данных, следующий код работает впервые, если снова нажать кнопку «Добавить», он не заполняется в сетке данных.

screenshot

       private List<Item> PopulateItemList()
    {
        return itemLst;
    }
    private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        Item item = new Item();
        item.Item1 = txtItem.Text;
        itemLst.Add(item);
        grdItem.ItemsSource = PopulateItemList();

    }
    private List<Item> itemLst = new List<Item>();

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        itemLst.Clear(); 

    }

Спасибо.

Ответы [ 2 ]

5 голосов
/ 05 октября 2011

Вы должны использовать ObservableCollection<T> вместо List<T>.

ObservableCollection<T> реализует INotifyCollectionChanged, который сообщит WPF, когда вы добавляете или удаляете элементы.

1 голос
/ 05 октября 2011

Либо вы должны использовать ObservableCollection, как предложено Слаксом.В противном случае вы должны сначала установить нулевую переменную dataSource в datatgrid, а затем снова заполнить ее каким-либо другим значением.Но я настоятельно рекомендую вам использовать ObservableCollection, и вы можете установить его на ItemSource datagrid в конструкторе UserControl вместо того, чтобы устанавливать его снова.

...