我正在尝试实现自定义 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