Wpf 我们可以在窗口上使用多xaml布局吗?

Wpf 我们可以在窗口上使用多xaml布局吗?,wpf,xaml,stretch,Wpf,Xaml,Stretch,我认为我们可以在带有XAML的windows上使用多布局。 因此,我尝试创建如下窗口: 我想在左边创建一个ListView,它可以调整大小。左侧的网格和文本框将适合右侧网格。 我尝试过使用其他布局,StackPanel,DockPanel。 如何创建可调整大小的网格 <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <Grid.RowDefinitions> &

我认为我们可以在带有XAML的windows上使用多布局。 因此,我尝试创建如下窗口: 我想在左边创建一个ListView,它可以调整大小。左侧的网格和文本框将适合右侧网格。 我尝试过使用其他布局,StackPanel,DockPanel。 如何创建可调整大小的网格

    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition />
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <ToolBar Name="toolBar" Grid.Row="0">
        <Button Name="btnLoad" Width="Auto" Height="25" ToolTip= Click="btnLoad_Click" VerticalAlignment="Bottom">
            <StackPanel Orientation="Horizontal">
                <Image Source="Resources/reload.png" Width="16" Height="16" HorizontalAlignment="Left" Margin="0 0 5 0"/>
                <TextBlock>Load/Reload</TextBlock>
            </StackPanel>
        </Button>
        <Button Name="btnSave" Width="Auto" Height="25"  Click="btnSave_Click">
            <StackPanel Orientation="Horizontal">
                <Image Source="Resources/save.png" Width="16" Height="16" HorizontalAlignment="Left" Margin="0 0 5 0"/>
                <TextBlock>Save</TextBlock>
            </StackPanel>
        </Button>
    </ToolBar>
    <ComboBox Name="cbTypeOfShop" Grid.Row="1" Margin="5 5 5 5"/>
    <Grid Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ListView Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
        <GridSplitter Grid.Column="1" Grid.RowSpan="3" HorizontalAlignment="Left" VerticalAlignment="Stretch" Background="Black" ShowsPreview="true" Width="5"/>
        <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="2">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>

            <DataGrid Name="dtgListItem" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">

            </DataGrid>
            <TextBox Grid.Row="1" Height="100" TextWrapping="Wrap" AcceptsReturn="True" Text="1231231231 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221231231231231231123123123123123123123123123123123123123123123123123" />
        </Grid>
    </Grid>
    <StatusBar Grid.Row="3" Height="25" HorizontalAlignment="Stretch">
        <TextBlock Name="abc">abc</TextBlock>
    </StatusBar>
</Grid>

装载/重新装载
拯救
abc

但当我调整左侧的大小时


试试这个

    <Grid>
           <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="5" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <TextBlock FontSize="55" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap">Left side</TextBlock>
            <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Stretch" />
            <TextBlock Grid.Column="2" FontSize="55" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap">Right side</TextBlock>
</Grid>

左侧
右侧

正如你所看到的,我只是创建了一个网格,它有两个同样宽的列,中间有一个5像素的列。


您的代码运行良好,但我需要在使用gridsplitter时调整datagrid的大小。请查看我更新的windows的图像。@onlage您必须检查“GridSplitter”@onlage您必须进行更改#ColumnDefinitionIt right。我将
GridSplitter
VerticalAlignment=Stretch
更改为
HorizontalAlignment=Stretch
。它起作用了。但我不明白为什么。你能给我解释一下吗?@onlage HorizontalAlignment枚举有四个属性Left、Center、Right和Stretch。“左”、“中”和“右”属性将子元素设置为父元素的左、中和右。“拉伸”属性拉伸子元素以填充父元素分配的布局空间。