- コンボボックスでnull値を選択することはできません。
- コントロールに表示するには、空白の項目を使用する必要があります。
私は同じ問題を抱えており、現在のプロジェクトでこのソリューションを使用しています:
public class ObservableCollectionCopy<T> : ObservableCollection<T>
{
public ObservableCollectionCopy(T firstItem, ObservableCollection<T> baseItems)
{
this.FirstItem = firstItem;
this.Add(firstItem);
foreach (var item in baseItems)
this.Add(item);
baseItems.CollectionChanged += BaseCollectionChanged;
}
public T FirstItem { get; set; }
private void BaseCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.NewItems != null)
foreach (var newItem in e.NewItems.Cast<T>().Reverse())
this.Insert(e.NewStartingIndex + 1, newItem);
if (e.OldItems != null)
foreach (var oldItem in e.OldItems.Cast<T>())
this.Remove(oldItem);
}
}
新しいコレクションには、ベースコレクションへの一方向のバインディングがあります。
this.SelectableGroups = new ObservableCollectionCopy<GroupModel>(
new GroupModel{Id = -1, Title = "Any group"},
this.GroupsCollection);
フィルタリング:
if (this.selectedGroup != null && this.selectedGroup.Id != -1)
this.MyCollectionView.Filter = v => v.SomeItem.GroupId == this.selectedGroup.Id;
else this.MyCollectionView.Filter = null;