Пользовательские переменные элементы управления 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 не было встроенного способа добиться этого.

Заранее спасибо.

Ответ 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>