사용자 정의 ObservableCollection을 구현하려고합니다. XAML에서 직접 바인딩 할 수있는 현재 (선택한) 항목 속성을가집니다. 지금까지 얻은 샘플 코드입니다. 누군가 올바른 방향을 가르쳐 줄 수 있습니까? 여기에있는 아이디어는 listviews의 선택된 항목 속성을 itemsources의 Currentitem에 직접 설정하고 인수를 현재 항목으로 취할 Action을 제공하는 것입니다. 이 동작은 viewmodel에서 설정됩니다.선택한 항목이있는 사용자 정의 ObservableCollection
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; }
}
이것은 뷰 모델의 샘플 사용입니다 내가 Llistview의 ItemSource (이 완벽하게 작동)이 모음을 결합하고 싶지만, 나는 그것의 selectedItem을 결합하고자하는 XAML보기 내부
get { return new ItemAwareObservableCollection<Companies>(onSelecttionchange, Resolve<ICompanyService>().Companies); }
속성을이 집합의 CurrentItem에 추가하십시오.
에 사용해야합니까? 비슷한 질문이 없습니다. 모든 샘플은 현재 우리가 사용하고있는 별도의 속성을 사용하는 방법을 보여줍니다. 그러나이 접근법을 사용하여 유용한 정보를 제공 할 수 있습니까? –
다른 질문이 있습니다. 제기 한 14 가지 질문 중 4 가지를 수락했습니다. (사람들은 시간을 들여서 도움을 받으면 upvotes & accepts를 알게됩니다.) –