- •Лабораторная работа: Основы wpf Упражнение 1. Кисти в wpf
- •Создание заготовки приложения
- •Страница 1. Использование однородной кисти SolidColorBrush
- •Страница 2. Использование цветов класса Brushes
- •Страница 3. Использование линейной градиентной кисти LinearGradientBrush
- •Страница 4. Периодическая смена направления градиента
- •Страница 5. Ступенчатая закраска градиентами
- •Страница 6. Закраска радиальным градиентом RadialGradientBrush
- •Упражнение 2. Элементы управления Menu, ToolBar, TabControl, ToolTip
- •Упражнение 3. Элементы управления Thumb, Border, Popup
- •Упражнение 4. Элементы управления ScrollViewer, Viewbox и StackPanel
- •Упражнение 5. Менеджер размещения Canvas
- •Упражнение 6. Менеджеры размещения StackPanel и DockPanel
- •Упражнение 7. Менеджеры размещения WrapPanel и UniformGrid
- •Упражнение 8. Панель Grid
- •Создание заготовки приложения
- •Простое применение Grid
- •Автоматическая подстройка под содержимое слотов
- •Жесткая установка размеров ячеек
- •Задание пропорций
- •Одинаковая подстройка под наибольшее содержимое
- •Выравнивание размера столбцов сетки по ключу группы
- •Связывание столбцов многих сеток из многих групп
- •Объединение ячеек сетки и интерактивный разделитель GridSplitter
- •Контрольное задание
- •Упражнение 9. Разработка собственного менеджера размещения MyPanel
Объединение ячеек сетки и интерактивный разделитель GridSplitter
Заполните вкладку Grid 7 приведенным ниже кодом и запустите приложение
<TabItem Header="Grid 7">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" HorizontalAlignment="Center" Margin="5">
Объединение столбцов первой строки
</TextBlock>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" MinHeight="50" MaxHeight="150" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" MinWidth="40" MaxWidth="200" />
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.ColumnSpan="3" Background="LightPink">Перый и второй</Button>
<GridSplitter
Grid.Row="1"
Grid.ColumnSpan="3"
Height="2"
ResizeDirection="Rows"
ResizeBehavior="PreviousAndNext"
HorizontalAlignment="Stretch" />
<Button Grid.Row="2" Grid.Column="0" Background="Aquamarine">Третий</Button>
<GridSplitter
Grid.Row="2"
Grid.Column="1"
Width="2"
ResizeDirection="Columns"
ResizeBehavior="PreviousAndNext"
VerticalAlignment="Stretch" />
<Button Grid.Row="2" Grid.Column="2" Background="Yellow">Четвертый</Button>
</Grid>
</Grid>
</TabItem>
Вначале строится сетка с двумя строками и одним столбцом. В первую строку помещен текстовый блок с заголовком и она подстраивается под его размеры, а вторая строка по высоте занимает оставшееся пространство родителя. Во вторую строку погружена внутренняя сетка из трех строк и трех столбцов. Ее последний слот позволяет потомку автоматически подстраиваться под свое содержимое, но на размеры по ширине и высоте установлены ограничения. Крайние слоты внутренней сетки заняты тремя цветными кнопками.
Кнопка, привязанная к верхней строке внутренней сетки, занимает сразу три соседних слота в соответствии с требованием присоединенного к ней свойства Grid.ColumnSpan="3". Всю вторую строку занимает элемент GridSplitter, ориентированный на разделение строк свойством ResizeDirection="Rows". Он дает возможность пользователю мышью перетаскивать границы между крайними строками внутренней сетки. В крайних столбцах последней строки размещены кнопки, а в средний слот погружен элемент GridSplitter, ориентированный на разделение столбцов.
