0

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 にバインドしたいと思います。

4

2 に答える 2

2

いいえ、私は実際にICollectionViewの CurrentItem を使用し、XAML で IsSynchronizedWithCurrentItem を使用ます

于 2012-07-23T10:56:26.303 に答える
0

クエリについて... WPF のSynchronizeWithCurrentItem機能を調べましたか?

于 2012-07-23T10:17:34.317 に答える