private void UncheckedLayerToMix(object sender, RoutedEventArgs e) { var contex = sender as System.Windows.Controls.Primitives.ToggleButton; Layer uncheckedLayer = (Layer)contex.DataContext; if (uncheckedLayer != null) { CheckedLayersForMixInOneLayer.Remove(uncheckedLayer); this.Publish <IsEnableMoveAndMixButtons>(new IsEnableMoveAndMixButtons(CheckedLayersForMixInOneLayer)); } }
private void CheckedLayerToMix(object sender, RoutedEventArgs e) { var contex = sender as System.Windows.Controls.Primitives.ToggleButton; Layer checkedLayer = (Layer)contex.DataContext; if (CheckedLayersForMixInOneLayer.Count == 0) { CheckedLayersForMixInOneLayer.Add(checkedLayer); this.Publish <IsEnableMoveAndMixButtons>(new IsEnableMoveAndMixButtons(CheckedLayersForMixInOneLayer)); } else if (CheckedLayersForMixInOneLayer.Count == 1) { var layer = CheckedLayersForMixInOneLayer.FirstOrDefault(); var indexFirstLayer = ItemsSource.Items.IndexOf(layer); Layer beforeFirstLayer = null; Layer afterFirstLayer = null; if (indexFirstLayer + 1 < ItemsSource.Items.Count) { afterFirstLayer = (Layer)ItemsSource.Items.GetItemAt(indexFirstLayer + 1); } if (indexFirstLayer - 1 >= 0) { beforeFirstLayer = (Layer)ItemsSource.Items.GetItemAt(indexFirstLayer - 1); } if ((checkedLayer == beforeFirstLayer) || (checkedLayer == afterFirstLayer)) { CheckedLayersForMixInOneLayer.Add(checkedLayer); this.Publish <IsEnableMoveAndMixButtons>(new IsEnableMoveAndMixButtons(CheckedLayersForMixInOneLayer)); } else { contex.IsChecked = false; } } else { contex.IsChecked = false; } }
private void Mix2Layers() { if (CheckedLayersForMixInOneLayer.Count == 2) { var sortedCollection = CheckedLayersForMixInOneLayer.OrderBy(x => x.GetZIndex).ToList(); var firstLayer = sortedCollection[0]; var secondLayer = sortedCollection[1]; Layer resultLayer = new Layer() { LastGrid = firstLayer.LastGrid, LastLayer = firstLayer.LastLayer, Name = string.Format("{0} + {1}", firstLayer.Name, secondLayer.Name), NextGrid = secondLayer.NextGrid, NextLayer = secondLayer.NextLayer }; List <Grid> gridIntoFirstGrid = null; List <Grid> gridIntoSecondGrid = null; gridIntoFirstGrid = (firstLayer.Grid.Children.Count > 0 ? HelpMethods.GetElementsFrom <Grid>(firstLayer.Grid).ConvertAll(x => (Grid)x) : new List <Grid>() { new Grid() }); gridIntoSecondGrid = (secondLayer.Grid.Children.Count > 0 ? HelpMethods.GetElementsFrom <Grid>(secondLayer.Grid).ConvertAll(x => (Grid)x) : new List <Grid>() { new Grid() }); var resultGrid = gridIntoFirstGrid.Concat(gridIntoSecondGrid); var zIndexResultGrid = firstLayer.ZIndex; firstLayer.Grid.Children.Clear(); secondLayer.Grid.Children.Clear(); int indexOfFirstLayer = Items.IndexOf(firstLayer); Grid grid = new Grid(); foreach (var item in resultGrid) { grid.Children.Add(item); } resultLayer.Grid = grid; resultLayer.ZIndex = zIndexResultGrid; resultLayer.IsChecked = true; int index = Items.IndexOf(firstLayer); DeleteLayer(firstLayer); DeleteLayer(secondLayer); this.Publish <AddLayer>(new AddLayer(resultLayer, index)); Items.Move(Items.IndexOf(resultLayer), index); if (resultLayer.LastLayer != null) { resultLayer.LastLayer.NextGrid = resultLayer.Grid; resultLayer.LastLayer.NextLayer = resultLayer; } if (resultLayer.NextLayer != null) { resultLayer.NextLayer.LastGrid = resultLayer.Grid; resultLayer.NextLayer.LastLayer = resultLayer; } CheckedLayersForMixInOneLayer.Clear(); this.Publish <IsEnableMoveAndMixButtons>(new IsEnableMoveAndMixButtons(CheckedLayersForMixInOneLayer)); } }