private void UpdateMonitor(RoutedEventArgs routedPropertyChangedEventArgs) { if (PositionMonitor == null) { return; } var dragablzItem = (DragablzItem)routedPropertyChangedEventArgs.OriginalSource; if (!Equals(ItemsControlFromItemContainer(dragablzItem), this)) { return; } PositionMonitor.OnLocationChanged(new LocationChangedEventArgs(dragablzItem.Content, new Point(dragablzItem.X, dragablzItem.Y))); if (!(PositionMonitor is StackPositionMonitor linearPositionMonitor)) { return; } var sortedItems = linearPositionMonitor.Sort(this.Containers <DragablzItem> ( )).Select(di => di.Content).ToArray( ); if (_previousSortQueryResult?.SequenceEqual(sortedItems) != true) { linearPositionMonitor.OnOrderChanged(new OrderChangedEventArgs(_previousSortQueryResult, sortedItems)); } _previousSortQueryResult = sortedItems; }
public BasicExampleMainModel() { _basicColourMonitor = new PositionMonitor(); _basicColourMonitor.LocationChanged += (sender, args) => BasicColourMonitorText = args.Location.ToString(); _peopleMonitor = new VerticalPositionMonitor(); _peopleMonitor.OrderChanged += PeopleMonitorOnOrderChanged; _people.Add(new Person {FirstName = "Albert", LastName = "Einstein"}); _people.Add(new Person { FirstName = "Neil", LastName = "Tyson" }); _people.Add(new Person { FirstName = "James", LastName = "Willock" }); //i move in esteemed circles ;) _viewModels.Add(new SimpleViewModel { Name = "Alpha", SimpleContent = "This is the alpha content"}); _viewModels.Add(new SimpleViewModel { Name = "Beta", SimpleContent = "Beta content", IsSelected = true }); _viewModels.Add(new SimpleViewModel { Name = "Gamma", SimpleContent = "And here is the gamma content" }); SelectedViewModel = _viewModels[1]; _interTabClient = new BasicExampleInterTabClient(); _addNewPerson = new AnotherCommandImplementation( x => { _newPersonCount++; _people.Add(new Person { FirstName = "Hello_" + _newPersonCount, LastName = "World_" + _newPersonCount }); }); _addNewViewModel = new AnotherCommandImplementation( x => { _newViewModelCount++; _viewModels.Add(new SimpleViewModel() { Name = "New Tab " + _newViewModelCount, SimpleContent = "New Tab Content " + _newViewModelCount }); SelectedViewModel = _viewModels.Last(); }); }