18

在 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 中没有内在的方法来实现这一点。

提前致谢。

4

2 回答 2

17

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

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

于 2012-08-01T19:30:52.787 回答
17

不是您要求的确切控件,而是一个示例。需要一个分离器,两边都有什么 * 和包含的控制伸展。

<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>
于 2012-08-01T20:08:24.970 回答