如何让DockPanel将最后一项填入底部和右侧?

问题描述 投票:0回答:1

如何让底部文本块水平和垂直填充剩余空间?

alt text

我有一个有这个区域的shell:

<DockPanel Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="2" LastChildFill="True"  
Background="Orange">

    <ItemsControl x:Name="MainNavigationPanel" 
        Background="Yellow"
        DockPanel.Dock="Left"
        cal:RegionManager.RegionName="MainNavigationPanel"
            Width="200" 
            HorizontalAlignment="Left"/>


    <StackPanel x:Name="MainContent"
        Background="Beige"
        Width="Auto"
        Height="Auto"
        VerticalAlignment="Stretch"
        HorizontalAlignment="Stretch"
        >
        <TextBlock Text="This will be the main region content."/>
        </StackPanel>

</DockPanel>

在MainNavigationPanel中我加载了这个视图:

<UserControl x:Class="MenuModule.Views.MainNavigationView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:igOB="http://infragistics.com/OutlookBar"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    VerticalAlignment="Stretch" 
    HorizontalAlignment="Stretch">

    <DockPanel LastChildFill="True"
        Background="Red"
        HorizontalAlignment="Left"
        VerticalAlignment="Stretch">

            <TextBlock Text="first" 
            DockPanel.Dock="Top"
            Background="LightBlue"
            VerticalAlignment="Stretch"
            HorizontalAlignment="Stretch"/>

            <TextBlock Text="second" 
            DockPanel.Dock="Bottom"
            Background="LightGreen"
            VerticalAlignment="Stretch"
            HorizontalAlignment="Stretch"/>

    </DockPanel>

</UserControl>
wpf xaml fill dockpanel
1个回答
2
投票

Dockpanel将自动用最后一个项目填充剩余空间,该项目没有指定DockPanel.Dock附加属性并指定了高度/宽度。

我在这里为您提供的示例在Shell.Xaml:Looking for Prism example of Modules loading themselves into a menu中说明了这种技术

您还可以在DockPanel的“备注”部分的MSDN文档中找到此事实:DockPanel on MSDN

© www.soinside.com 2019 - 2024. All rights reserved.