private void InitializeCriterias() { var members = new ObservableCollection <SortCriterionDescriptior>(); List <Entity> entities = new List <Entity>(); foreach (var item in _tournament.Walllist.SortCriterion) { entities.Add(item.Id); } foreach (var item in _tournament.EntitiesCriteria) { if (!entities.Contains(item)) { entities.Add(item); } } foreach (Entity it in entities) { if (members.FirstOrDefault(val => val != null && val.Id == it) == null) { var member = new SortCriterionDescriptior() { Id = it }; member.Enabled = true; if (_tournament.Walllist.SortCriterion.Find(item => item.Id == member.Id) != null) { member.Active = true; } if (_tournament.EntitiesHidden.Contains(it)) { continue; } members.Add(member); } } this.lvSortCriterion.ItemsSource = members; // This is all that you need to do, in order to use the ListViewDragManager. this.dragMgr2 = new ListViewDragDropManager <SortCriterionDescriptior>(this.lvSortCriterion); // Turn the ListViewDragManager on and off. this.dragMgr2.ListView = this.lvSortCriterion; // Show and hide the drag adorner. this.dragMgr2.ShowDragAdorner = true; // Hook up events on both ListViews to that we can drag-drop // items between them. this.lvSortCriterion.DragEnter += OnListViewDragEnter; this.lvSortCriterion.Drop += OnListViewDrop; }
private void Apply() { _tournament.IsCreated = _isCreated; _tournament.Walllist.SortCriterion.Clear(); foreach (var item in lvSortCriterion.Items) { var descr = item as SortCriterionDescriptior; if (descr.Active) { var soDscr = new SortCriterionDescriptior() { Id = descr.Id }; _tournament.Walllist.SortCriterion.Add(soDscr); } } _tournament.Walllist.Columns.Clear(); foreach (var item in lvWallList.Items) { var descr = item as WallListMemberDescriptior; if (descr.Active) { var member = new WallListMemberDescriptior() { Id = descr.Id }; _tournament.Walllist.Columns.Add(member); } } if (OnResult != null) { OnResult(ReturnResult.Ok, _tournament); } }