WPF 和XAML问题

发布于 2024-10-10 12:10:50 字数 1815 浏览 5 评论 0原文

我是 WPF 和 WPF 新手沙姆尔 我不知道如何锚定如何停靠...... 在此屏幕上,灰色表示状态栏已停靠,但网格和菜单并非所有组件都在画布中。 这是 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>

替代文字

Im new in WPF & Xaml
I dont know how to anchor how to dock...
On this screen gray is statusBar is docked but grid and menu is not all components are in canvas.
This is 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>

alt text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

明天过后 2024-10-17 12:10:50

您不希望这些东西出现在 Canvas 中。我不确定我是否在 WPF 中使用过 Canvas

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

  • DockPanel 中的每个控件都有一个 DockPanel.Dock 附加属性:Left、Top、右边,还是底部
  • 什么,没有填充?这很重要:您可以让一个控件填充可用空间,并且它将是 DockPanel 中声明的最后一个控件。因此,即使您希望“填充”控件位于最顶部,您也可以将其设置为 DockPanel 中的最后一项并设置 DockPanel.Dock="Top" 。
  • 除了最后一个“填充”项目之外,具有相同停靠设置的其他项目将按照声明的顺序停靠。

从最基本的角度来说,DockPanel 的使用方式与 StackPanel 类似,只不过它会填充可用空间。

You don't want these things to go in a Canvas. I'm not sure I've ever used a Canvas in WPF.

DockPanel is your friend, and this is how it works:

  • Each control in the DockPanel gets a DockPanel.Dock attached property : Left, Top, Right, or Bottom
  • What, no Fill? This is important: You can have one control fill up available space, and that will be the last control declared in the DockPanel. So, even if you want the "fill" control to be at the very top, you make it the last item in the DockPanel and set DockPanel.Dock="Top".
  • Other than the last, "fill" item, others which have the same dock setting will be docked in the order in which they were declared.

At its most basic, DockPanel can be used just like StackPanel except it will fill available space.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文