WPF和XAML问题

Ira*_*ili 1 wpf xaml inkcanvas

我是WPF和Xaml的新手我不知道如何锚定如何停靠...在这个屏幕上灰色是statusBar停靠但网格和菜单并非所有组件都在画布中.这是XAML

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication6.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">

<Grid x:Name="LayoutRoot">
    <Canvas>
        <StackPanel Height="40" Width="624" VerticalAlignment="Top" HorizontalAlignment="Center">
            <Menu Height="39" Margin="1,0,0,0">
                <Menu.Background>
                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                        <GradientStop Color="#FFF6F6F6" Offset="0.25"/>
                        <GradientStop Color="#FFEAE8E8" Offset="0.25"/>
                        <GradientStop Color="#FFDCD9D9" Offset="0.8"/>
                        <GradientStop Color="White" Offset="1"/>
                    </LinearGradientBrush>
                </Menu.Background>
            </Menu>
        </StackPanel>
        <StackPanel Height="356" Canvas.Top="44" Width="161" HorizontalAlignment="Left">
            <Expander Header="Expander" Height="107">
                <Grid Background="#FFE5E5E5"/>
            </Expander>
        </StackPanel>
        <StackPanel Height="360" Canvas.Left="161" Canvas.Top="40" Width="463">
            <DataGrid Height="361"/>
        </StackPanel>
    </Canvas>
    <StackPanel Height="40" Margin="-1,0,0,0" VerticalAlignment="Bottom">
        <StatusBar Height="40" Background="#FF897676"/>
    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

替代文字

Jay*_*Jay 5

你不希望这些东西进入Canvas.我不确定我曾经Canvas在WPF中使用过.

DockPanel 是你的朋友,这是它的工作原理:

  • DockPanel获取DockPanel.Dock附加属性中的每个控件:Left,Top,Right或Bottom
  • 什么,没有填充?这很重要:您可以让一个控件填满可用空间,这将是在中声明DockPanel最后一个控件.因此,即使您希望"填充"控件位于最顶层,也可以将其DockPanel设置为和设置中的最后一项DockPanel.Dock="Top".
  • 除了最后一个"填充"项目,具有相同停靠设置的其他项目将按照它们被声明的顺序停靠.

最基本的,DockPanel可以使用,StackPanel除了它将填充可用空间.