Я пытаюсь добавить столбцы и сетки в сетку, но не могу получить точное поведение.
После того как пользователь указывает, где он хочет вертикальный разделитель появляться:Поведение GridSplitter
// Get current Col0 width, size new col and existing Col0
double col0Width = LayoutRoot.ColumnDefinitions[0].ActualWidth;
double newCol0Width = col0Width - 5 - pt.X;
LayoutRoot.ColumnDefinitions[0].Width = new GridLength(newCol0Width);
// New Column 0
var c = new ColumnDefinition();
c.Width = new GridLength(pt.X);
LayoutRoot.ColumnDefinitions.Insert(0, c);// Attach GridSplitter to left edge of existing first column
var gss = new GridSplitter();
gss.Background = new SolidColorBrush(Colors.DarkSlateBlue);
gss.Width = 5; gss.Cursor = Cursors.ScrollWE;
gss.ResizeBehavior = GridResizeBehavior.BasedOnAlignment;
gss.HorizontalAlignment = HorizontalAlignment.Left;
LayoutRoot.Children.Add(gss);
// Add to current left-most colunn
Grid.SetColumn(gss, 0);
// Create new column, insert
// New Column 0
var c = new ColumnDefinition();
c.Width = new GridLength(pt.X);
LayoutRoot.ColumnDefinitions.Insert(0, c);
// Move existing content from Col 0 to new Col 1.
Я могу повторить это и создать произвольное количество вертикальных разделителей.
Требуемое изменение размера: перемещение сплиттера мгновенно изменяет размеры столбцов. слева и справа от сплиттера.
Текущее изменение размера: перемещение сплиттера рассматривает все, что находится справа от сплиттера, как один объект, расширяя или уменьшая столбец слева от разделителя, перемещая все вправо. То есть, если есть 3 столбца, перемещение самого левого сплиттера появляется, чтобы нажать col 2 вправо и сжимать col 3, без изменения размера col.
(Надеюсь, я объяснил это достаточно ясно.)
Я пробовал поместив GridSplitters в свои собственные столбцы и попробовал различные GridResizeBehaviors, но не нашел правильной комбинации.
Любые советы будут оценены ....
И связанный с этим вопрос: В качестве обработчика событий для OnDragDelta GridSplitter, является ли способ, чтобы остановить сплиттер от путешествия дальше в определенном направлении? Я бы хотел, чтобы они не сокращали правый столбец ниже определенной ширины, позволяя им перемещать разделитель назад влево.
Спасибо.
Я думаю, что вопрос назначение ширины столбцов. Я хочу создать новый столбец w/i пределы текущего столбца 0. Однако, чтобы заставить gridsplitters работать по желанию, кажется, мне придется вычислить все новые ширины столбцов и установить их в соответствующие «*», размеры. – Number8