2014-09-03 69 views
0

我正在制作一个API,它将用于我的聊天程序。C#绑定ObservableCollection <T>与列表<T>

API核心类有一个像List<Room> Rooms_;

API核心类房间列表有一个属性。 public Room[] Rooms { get { return Rooms_.ToArray(); } }

和API核心类也有一个很容易打印房间列表的属性。 此属性是public ObservableCollection<Room> ObservableRooms { get { return new ObservableCollection<Room>(Rooms_); }

现在,当房间被添加或移除,我编码Add功能和Remove功能这样。

Rooms_.Add(new_room); 
Rooms_.Remove(room); 

但是ObservableRooms不会自动改变。

我想将ObservableRooms属性绑定到Rooms_列表。

有人知道吗?

谢谢。

+0

我不认为有一个属性返回一个**新**'ObservableCollection'每个调用得到是有道理的,但我不是一个WPF专家。 – Dirk 2014-09-03 06:03:03

+0

@Dirk不,它不是WPF。只是自动更改值:)嗯.. – Lee 2014-09-03 06:05:21

+0

@Dirk一个ObservableCollection有一个构造函数(列表)但是这是错误的吗? – Lee 2014-09-03 06:06:27

回答

1

如果您直接绑定到ObservableCollection,为什么不直接操作ObservableCollection。

private ObservableCollection<Room> _observableRooms 

public ObservableCollection<Room> ObservableRooms 
{ 
    get { return _observableRooms; } 
    set { _observableRooms = value; } 
} 

然后直接从ObservableRooms添加和删除,您的UI应该正确更新。

+0

我会试试这个谢谢。 – Lee 2014-09-03 06:28:01

+0

我也会让setter成为私有的,除非你希望那个API的用户改变整个集合而不是仅仅添加/删除项目。 – Dirk 2014-09-03 07:44:51