我正在寫windows phone 8
使用MVVM
模式的聊天應用程序。我的問題是通知LongListSelector
哪一組ObservableCollection
項目正在改變。 好的一步一步:PropertyChanged與TemplateSelector和分組ListList對象在LongListSelector問題
的分組聯繫人列表是一個對象
public ObservableCollection<Group<ContactModel>> GroupedContacts
其中組是:
public class Group<T> : ObservableCollection<T>
{
public Group(string name, IEnumerable<T> items)
{
this.Key = name;
foreach (T item in items)
{
this.Add(item);
}
}
public string Key
{
get;
set;
}
}
然後我加入兩種grups的那個對象:
private void CreateGroups()
{
var group = new Group<ContactModel>("Online", new ObservableCollection<ContactModel>());
GroupedContacts.Add(group);
group = new Group<ContactModel>("Offline", new ObservableCollection<ContactModel>());
GroupedContacts.Add(group);
}
添加了一些ContactModel
將對象分配給每個組我將它綁定到我的LongListSelector
當屬性Online
的ContactModel
正在更改時,我將該對象從一個組移動到另一個 - 這可以毫無問題地工作。問題是我的TemplateSelector
不改變ContentTemplate
。
TemplateSelector:
public class AvailabilityTemplateSelector : ContentControl
{
public DataTemplate OnlineTemplate { get; set; }
public DataTemplate OfflineTemplate { get; set; }
protected override void OnContentChanged(object oldContent, object newContent)
{
base.OnContentChanged(oldContent, newContent);
var contact = newContent as ContactModel;
if (contact.Online)
{
ContentTemplate = OnlineTemplate;
}
else
{
ContentTemplate = OfflineTemplate;
}
}
}
我覺得這裏的問題是,我是從一組移動對象到另一個。 GroupedContacts
屬性並不意味着屬性已經改變。 ObservableCollection
是在屬性GroupedContacts
這樣做,但它不是我的LongListSelector
的Content
。任何想法如何從ObservableCollection
「告訴」給已被更改設置,然後從GroupedContacts
我GroupedContacts
財產我LongListSelector
經過一番調試後,我發現notyfing運行良好,問題出現在另一個地方。其他內容項目將轉到TemplateSelector,而不是已更改的內容項目。 – Grzesiu