Элемент не удаляется из списка - PullRequest
0 голосов
/ 18 июня 2011

Элемент не удаляется из списка

вот мой код:

public interface IEmpConnection
{
    int SegId { get; set; }
}

public class EmpConnection : IEmpConnection
{

    private int segid;
    public int SegId
    {
        get
        {
            return segid;
        }
        set
        {
            segid = value;
        }
    }
}

public class CustomerConnection : EmpConnection, ICustomerConnection
{

    private int _id;

    public int Id
    {
        get
        {
            return _id;
        }
        set
        {
            _id = value;
        }
    }
}

public interface ICustomerConnection
{
    int Id { get; set; }


}

public class CustConn : CustomerConnection
{
    private ObservableCollection<CustomerConnection> _airSeg;

    public CustConn()
    {
        _airSeg = new System.Collections.ObjectModel.ObservableCollection<CustomerConnection>();
        _airSeg.Add(new AirSegmentConnection { Id = 1, SegId = 2 });
        _airSeg.Add(new AirSegmentConnection { Id = 1, SegId = 3 });
    }

    private bool isDeleted;

    public bool IsDeleted
    {
        get { return isDeleted; }
        set { isDeleted = value; }
    }

    private List<IEmpConnection> _connection;
    public List<IEmpConnection> Connections
    {
        get
        {
            var s = new AirSegmentConnection();
            var k = s as ISegmentConnection;

            if (IsDeleted)
            {
                _airSeg.RemoveAt(1);
            }

            return _connection = _airSeg.ToList().Cast<ISegmentConnection>().ToList();
            //return _airSeg.ToList().Cast<ISegmentConnection>().ToList();
        }

        set
        {
            _connection = value;
            //_airSeg = new System.Collections.ObjectModel.ObservableCollection<ISegmentConnection>(value.ToList()) ;
        }
    }

    private ObservableCollection<CustomerConnection> airConnection;

    public ObservableCollection<CustomerConnection> AirConnection
    {
        get { return _airSeg; }
        set { _airSeg = value; }
    }
}

на главной

элемент, нажав кнопку не удаляется.Пожалуйста, предложите мне, где я делаю неправильно.

CustConn a = new CustConn();
if (a.Connections.Count > 0)
{
    a.Connections = new List<IEmpConnection>();
    a.Connections.RemoveAt(1);// this item is not being removed.
}

Пожалуйста, предложите мне сделать код в этом коде.

Спасибо Amit

Ответы [ 2 ]

1 голос
/ 18 июня 2011

Кажется, что вы заменяете список подключений перед удалением подключения.

Поскольку у вас это помечено как WPF, я собираюсь предположить, что в какой-то момент вы смогли удалить элементиз списка, но он все еще появился на экране.Попробуйте это:

if (a.Connections.Count > 0)
{
     var newList = new List<IEmpConnection>(a.Connections);
     a.Connections.RemoveAt(1);
     a.Connections = newList;
} 

В качестве альтернативы, вы можете использовать ObservableCollection<IEmpConnection>.Это специальная коллекция, которая вызывает события при изменении коллекции.Тогда вы просто удалите объект, и экран обновится.

1 голос
/ 18 июня 2011

Вы создаете новый пустой список и затем пытаетесь удалить элемент в позиции 1. Фактически вы просто перезаписали свой исходный список.

if (a.Connections.Count > 0)
{
    /// REMOVE THIS LINE a.Connections = new List<IEmpConnection>();
    a.Connections.RemoveAt(1);// this item is not being removed.
}

Строка, которую я закомментировалон создает новый список и перезаписывает a.Connections непосредственно перед попыткой удалить элемент.Именно это приводит к сбою кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...