如何解决项未从列表中删除
| 未从列表中删除项目 这是我的代码: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.
}
请建议我正在这段代码中做。
谢谢
阿米特
解决方法
似乎在删除连接之前,您正在替换连接列表。
由于您已将其标记为WPF,因此我假设您可以从列表中删除该项目,但该项目仍显示在屏幕上。尝试这个:
if (a.Connections.Count > 0)
{
var newList = new List<IEmpConnection>(a.Connections);
a.Connections.RemoveAt(1);
a.Connections = newList;
}
或者,您可以使用ObservableCollection<IEmpConnection>
。这是一个特殊的集合,当集合更改时会引发事件。然后,您只需删除对象,屏幕就会更新。
, 您正在创建一个新的空列表,然后尝试删除位置1的元素。实际上,您已经覆盖了原始列表。
if (a.Connections.Count > 0)
{
/// REMOVE THIS LINE a.Connections = new List<IEmpConnection>();
a.Connections.RemoveAt(1);// this item is not being removed.
}
我注释掉的行创建了一个新列表,并在尝试删除该项目之前立即覆盖了5英镑。这就是导致代码失败的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。