添加或删除记录时ObservableCollection未更新的列表视图

时间:2016-02-06 12:36:25

标签: c# listview observablecollection updating

我的ListView在添加或删除项目时不会自行更新。此外,当我关闭并重新打开表单时,会出现更新列表。这是c#代码:

using Library;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;

namespace Bajaj.ViewModels
{
    #region Records...
    public class _REC_LedgerGroup
    {
        public int sno { get; set; }
        public int id { get; set; }
        public string name { get; set; }
        public string alias { get; set; }

        public _REC_LedgerGroup(int sno, int id, string name, string alias)
        {
            this.sno = sno;
            this.id = id;
            this.name = name;
            this.alias = alias;
        }
    }
    #endregion

    public class GroupListVM : ObservableCollection<_REC_LedgerGroup>
    {
        public GroupListVM()
            : base()
        {
            CollectionChanged += GroupListVM_CollectionChanged;

            Database DB = new Database();
            DB.Open();
            try
            {
                MySqlCommand command = DB.connection.CreateCommand();
                command.CommandText = "select * from ledgergroups order by id;";
                MySqlDataReader rdr = command.ExecuteReader();
                if (rdr.HasRows)
                {
                    List<_REC_LedgerGroup> RC = new List<_REC_LedgerGroup>();
                    int count = 0;
                    while (rdr.Read())
                    {
                        count++;
                        Add(
                            new _REC_LedgerGroup(
                                count,
                                Convert.ToInt32(rdr["id"]),
                                rdr["name"].ToString(),
                                rdr["alias"].ToString()
                                ));
                    }

                    rdr.Close();
                    DB.Close();
                }
                else { DB.Close(); }
            }
            catch { DB.Close(); }
        }

        private void GroupListVM_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {

        }
    }
}

这是XAML:

<ListView 
            x:Name="GroupList" 
            Grid.ColumnSpan="2" Grid.Row="5" 
            Background="#FFEEEEEE" Margin="0,2" FontSize="12" 
            ItemsSource="{Binding Source={StaticResource GroupListCollection}}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Sno" Width="100" DisplayMemberBinding="{Binding sno}" />
                    <GridViewColumn Header="ID" Width="100" DisplayMemberBinding="{Binding id}" />
                    <GridViewColumn Header="Name" Width="200" DisplayMemberBinding="{Binding name}" />
                    <GridViewColumn Header="Alias" Width="100" DisplayMemberBinding="{Binding alias}" />
                </GridView>
            </ListView.View>
        </ListView>

我不知道我哪里出错了。

0 个答案:

没有答案