我正在尝试实现自定义ObservableCollection,它将具有当前(选定的)项属性,可以直接从XAML绑定这是我到目前为止的示例代码有人能指出我正确的方向吗?这里的想法是将listviews的选定项属性直接设置为其itemsources的Currentitem,并提供将参数作为当前项的Action。此操作将从viewmodel设置。
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 View中我希望将此集合绑定到Llistview的ItemSource(这完美地运行),但我想将其selecteditem属性绑定到此集合的CurrentItem
答案 0 :(得分:2)
不,我确实会使用CurrentItem的ICollectionView并在您的XAML中使用IsSynchronizedWithCurrentItem
答案 1 :(得分:0)
对于您的查询...您是否在WPF中探索SynchronizeWithCurrentItem功能?