/// <summary>
        ///  Sets the mode and notify all properties.
        /// </summary>
        /// <param name="layerageCollection"> The layerage-collection. </param>
        public void SetMode(LayerageCollection layerageCollection)
        {
            //Layerages
            IEnumerable <Layerage> selectedLayeragesRecursive = LayerageCollection.GetAllSelectedRecursive(layerageCollection);
            int count = selectedLayeragesRecursive.Count();

            if (count == 0)
            {
                this.SetModeNone();//None
            }
            else if (count == 1)
            {
                Layerage outermost = LayerageCollection.FindOutermostLayerage(selectedLayeragesRecursive);
                this.SetModeSingle(outermost);//Single
            }
            else if (count >= 2)
            {
                this.SetModeMultiple(selectedLayeragesRecursive);//Multiple
            }
        }
        private void _setModeMultiple(IEnumerable <Layerage> layerages)
        {
            Layerage outermost      = LayerageCollection.FindOutermostLayerage(layerages);
            ILayer   outermostLayer = outermost.Self;

            this.SelectionMode = ListViewSelectionMode.Multiple;//Transformer

            this.SelectionLayerage  = null;
            this.SelectionLayerages = layerages;

            //TransformerBorder
            TransformerBorder border = new TransformerBorder(layerages);

            this.Transformer = border.ToTransformer();

            //////////////////////////

            this.LayerType = outermostLayer == null ? LayerType.None : outermostLayer.Type;
            this.Opacity   = outermostLayer == null ? 1.0f : outermostLayer.Opacity;
            this.BlendMode = outermostLayer?.BlendMode;
            this.SetVisibility(outermostLayer == null ? Visibility.Visible : outermostLayer.Visibility);
            this.SetTagType(outermostLayer == null ? TagType.None : outermostLayer.TagType);

            //////////////////////////

            this.Effect = outermostLayer?.Effect;
            this.Filter = null;
            this.SetStyle(outermostLayer?.Style);

            //////////////////////////

            this.SetGroupLayer(layerages);
            this.SetImageLayer(outermostLayer);
            this.SetCurveLayer();
            this.SetFontLayer(null);

            //////////////////////////

            this.SetPatternLayer(outermostLayer);
            this.SetGeometryLayer(outermostLayer);
        }