用户可调整大小的WPF控件?

时间:2012-08-01 19:20:14

标签: wpf xaml

在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。有没有办法将调整大小手柄附加到这些以达到相同的效果,或者是否有其他控件可以嵌入这些?正如我所说,上面只是一个试验的例子 - 我不在乎我是否使用那些精确的控件。

我确实找到了一个在MSDN上使用Adorner添加调整大小句柄的示例,但它涉及超过170行C#代码,所以在采用之前我想确保在XAML中没有内在的方法来实现这一点。

提前致谢。

2 个答案:

答案 0 :(得分:15)

您可以使用GridSplitter您需要做的是使用Grid进行布局,然后使用GridSplitter调整列或行的大小。

以下是How to: Create User-Resizable Applications with GridSplitter

的示例

答案 1 :(得分:12)

不是您要求的确切控件而是样品。需要一个分离器,左右是什么*和包含的控制拉伸。

<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>