Пользовательские переменные элементы управления WPF?
В XAML, как я могу изменить размеры элементов управления или частей дисплея так, как можно захватывать и изменять размеры различных панелей, таких как панель инструментов, обозреватель решений или список ошибок в Visual Studio?
В этом составленном примере. , ,
<Window x:Class="UI_Experiments_1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<DockPanel x:Name="Tab3DockPanel" Background="#FFA0FFA0" LastChildFill="True">
<ScrollViewer DockPanel.Dock="Left" Background="Lavender">
<TextBlock Height="60" TextWrapping="Wrap" Background="#FFFFDDDD" Width="140">
ScrollViewer - DockPanel.Dock="Left"
</TextBlock>
</ScrollViewer>
<TextBlock DockPanel.Dock="Top" HorizontalAlignment="Center"
TextWrapping="Wrap" Background="LemonChiffon">
DockPanel.Dock="Top" HorizontalAlignment="Center"
</TextBlock>
<ListBox DockPanel.Dock="Right" Background="#FFCCEEFF">
ListBox DockPanel.Dock="Bottom"
</ListBox>
</DockPanel>
</Window>
, , У меня есть DockPanel с ScrollView, прикрепленным слева, ListBox состыковался внизу, а TextBlock сверху. Есть ли способ привязать к ним изменения размера для достижения того же эффекта или есть какой-то другой элемент управления, в который они могут быть встроены? Как я уже сказал, вышесказанное является всего лишь примером для экспериментов - мне все равно, использую ли я эти точные элементы управления.
Я нашел пример добавления ручек изменения размера с помощью Adorner в MSDN, но он задействовал более 170 строк кода С#, поэтому, прежде чем принять это, я хотел убедиться, что в XAML не было встроенного способа добиться этого.
Заранее спасибо.
Ответы
Ответ 1
Вы можете пойти с GridSplitter. Что вам нужно сделать, так это сделать свой макет с помощью Grid, а затем использовать GridSplitter для изменения размеров столбцов или строк.
Ниже приведен пример: Как создать пользовательские изменяемые приложения с помощью GridSplitter
Ответ 2
Не точные элементы управления, которые вы просили, но образец. Нужна сплиттер и то, что находится с обеих сторон *, и сдерживаемый контроль.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBox Grid.Row="0" Grid.Column="0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Text="TexBox" />
<GridSplitter Grid.Row="0" Grid.Column="1" Margin="2,0,2,0"
Width="3" Background="Purple"
VerticalAlignment="Stretch"
HorizontalAlignment="Center" />
<ListView Grid.Row="0" Grid.Column="2" Background="Aqua"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
</Grid>