0

我正在尝试实现自定义 ObservableCollection 它将具有可以直接从 XAML 绑定的当前(选定)项目属性 这是我到目前为止得到的示例代码有人能指出我正确的方向吗?这里的想法是将 listviews 的 selected item 属性直接设置为其 itemsources 的 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

不,我确实会使用ICollectionViewCurrentItem并在您的 XAML 中使用IsSynchronizedWithCurrentItem

于 2012-07-23T10:56:26.303 回答
0

对于您的查询...您是否探索过 WPF 中的SynchronizeWithCurrentItem功能?

于 2012-07-23T10:17:34.317 回答