public static void PutToBottom(Grid parent, Grid me, Grid source)
        {
            parent.ColumnDefinitions.Clear();
            parent.RowDefinitions.Clear();

            PhantasmagoriaSplitter splitter = new PhantasmagoriaSplitter()
            {
                VerticalAlignment = VerticalAlignment.Bottom,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                Height = 8,
                Width = double.NaN
            };

            parent.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
            parent.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(parent.ActualHeight * 0.5), MinHeight = MIN_HEIGHT });

            me.SetValue(Grid.RowProperty, 0);
            me.SetValue(Grid.RowSpanProperty, 1);
            me.Margin = new Thickness(0, 0, 0, 3);
            splitter.SetValue(Grid.RowProperty, 0);
            splitter.SetValue(Grid.RowSpanProperty, 1);
            splitter.Margin = new Thickness(0, 0, 0, -4);
            source.SetValue(Grid.RowProperty, 1);
            source.SetValue(Grid.RowSpanProperty, 1);
            source.Margin = new Thickness(0, 3, 0, 0);

            parent.Children.Add(me);
            parent.Children.Add(source);
            parent.Children.Add(splitter);
        }
        public static void PutToLeft(Grid parent, Grid me, Grid source)
        {
            parent.ColumnDefinitions.Clear();
            parent.RowDefinitions.Clear();

            PhantasmagoriaSplitter splitter = new PhantasmagoriaSplitter()
            {
                VerticalAlignment = VerticalAlignment.Stretch,
                HorizontalAlignment = HorizontalAlignment.Left,
                Height = double.NaN,
                Width = 8
            };

            parent.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(parent.ActualHeight * 0.5), MinWidth = MIN_WIDTH });
            parent.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });

            me.SetValue(Grid.ColumnProperty, 1);
            me.SetValue(Grid.ColumnSpanProperty, 1);
            me.Margin = new Thickness(3, 0, 0, 0);
            splitter.SetValue(Grid.ColumnProperty, 1);
            splitter.SetValue(Grid.ColumnSpanProperty, 1);
            splitter.Margin = new Thickness(-4, 0, 0, 0);
            source.SetValue(Grid.ColumnProperty, 0);
            source.SetValue(Grid.ColumnSpanProperty, 1);
            source.Margin = new Thickness(0, 0, 3, 0);

            parent.Children.Add(me);
            parent.Children.Add(source);
            parent.Children.Add(splitter);
        }