XAML から直接バインドできる現在の (選択された) アイテム プロパティを持つカスタム ObservableCollection を実装しようとしています これはこれまでに取得したサンプル コードです 誰かが私を正しい方向に向けることができますか? ここでの考え方は、リストビューの選択されたアイテムのプロパティをそのアイテムソースの Currentitem に直接設定し、現在のアイテムとして引数をとる Action を提供することです。このアクションはビューモデルから設定されます。
public class ItemAwareObservableCollection<T> : ObservableCollection<T>
{
private readonly Action<T> _selectionCallback;
private T _currentItem;
public T CurrentItem
{
get { return _currentItem; }
set
{
if(_currentItem.Equals(value))
_currentItem = value;
OnPropertyChanged(new PropertyChangedEventArgs("CurrentItem"));
_selectionCallback(value);
}
}
public ItemAwareObservableCollection(Action<T> selectionCallback)
{
_selectionCallback = selectionCallback;
}
public ItemAwareObservableCollection(Action<T> selectionCallback, IEnumerable<T> collection)
: base(collection) { _selectionCallback = selectionCallback; }
public ItemAwareObservableCollection(Action<T> selecytionCallback, List<T> list)
: base(list) { _selectionCallback = selecytionCallback; }
}
これはviewmodelからの使用例です
get { return new ItemAwareObservableCollection<Companies>(onSelecttionchange, Resolve<ICompanyService>().Companies); }
XAML ビュー内で、このコレクションを Llistview の ItemSource にバインドしたい (これは完全に機能します) が、selecteditem プロパティをこのコレクションの CurrentItem にバインドしたいと思います。