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

use*_*117 17 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>
Run Code Online (Sandbox Code Playgroud)

...我有一个DockPanel,左边是一个ScrollView,底部是一个ListBox,顶部是一个TextBlock.有没有办法将调整大小句柄附加到这些以达到相同的效果,或者是否有一些其他控件可以嵌入?正如我所说的,以上只是一个试验的例子 - 我不在乎我是否使用那些精确的控件.

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

提前致谢.

Vla*_*den 15

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

以下是如何使用GridSplitter创建用户可调整大小的应用程序的示例


pap*_*zzo 14

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

<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>
Run Code Online (Sandbox Code Playgroud)

  • 是的...与其他两个上的“*”结合,它使其他两个保持相同的大小,同时调整“GridSplitter”的大小。我的建议:保持“GridSplitter”及其“ColumnDefinition”的宽度固定(3或5个像素左右) (3认同)