【问题标题】:Dock Controls in WPFWPF 中的停靠控件
【发布时间】:2013-10-01 20:33:45
【问题描述】:

我对 WPF 很陌生,但我习惯于 winforms。在winforms中,当我想停靠一个控件时,我只使用DockStyle,但我不知道如何在wpf中做到这一点。从this question 的回答来看,我已经能够将我的richtextbox 停靠在窗口中。

但我现在的问题是如何将状态栏和菜单栏停靠在窗口的顶部和底部。我试过使用

<Window x:Class="Textpad.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Textpad" Height="324" Width="390" FontFamily="Tahoma">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="368*" />
        <ColumnDefinition Width="0*" />
    </Grid.ColumnDefinitions>
    <Menu Height="23" HorizontalAlignment="Center" Name="menu1" VerticalAlignment="Top" Width="368" Grid.ColumnSpan="2">
        <MenuItem Header="File">
            <MenuItem Header="New" />
            <MenuItem Header="Open" />
            <MenuItem Header="Save" />
            <MenuItem Header="Save as" />
            <Separator />
            <MenuItem Header="Print" />
            <MenuItem Header="Print Preview" />
            <MenuItem Header="Page Setup" />
            <Separator />
            <MenuItem Header="Exit" />
        </MenuItem>
        <MenuItem Header="Edit">
            <MenuItem Header="Undo" />
            <MenuItem Header="Redo" />
            <Separator />
            <MenuItem Header="Cut" />
            <MenuItem Header="Copy" />
            <MenuItem Header="Paste" />
            <MenuItem Header="Delete" />
            <Separator />
            <MenuItem Header="Find" />
            <MenuItem Header="Replace" />
            <Separator />
            <MenuItem Header="Select All" />
        </MenuItem>
        <MenuItem Header="Format">
            <MenuItem Header="Word Wrap" />
            <Separator />
            <MenuItem Header="Font" />
            <MenuItem Header="Text Color" />
        </MenuItem>
        <MenuItem Header="View">
            <MenuItem Header="Status Bar" />
        </MenuItem>
        <MenuItem Header="Help">
            <MenuItem Header="About Textpad" />
        </MenuItem>
    </Menu>
    <DockPanel>
        <StatusBar Height="23 " HorizontalAlignment="Stretch" Name="statusBar1" Width="368" Grid.ColumnSpan="2" DockPanel.Dock="Bottom">
            <StatusBarItem Content="This is status baritem content to test" />
        </StatusBar>
    </DockPanel>
    <RichTextBox HorizontalAlignment="Stretch" Margin="0,21" Name="richTextBox1" VerticalAlignment="Stretch" TextChanged="richTextBox1_TextChanged" VerticalContentAlignment="Top" Grid.ColumnSpan="2" />
</Grid>

但菜单和状态栏在最大化时停靠在窗口的中心。

请问我做错了什么?

【问题讨论】:

    标签: c# wpf winforms


    【解决方案1】:

    您需要一个DockPanel 并将DockPanel.Dock 附加属性设置为要停靠的元素:

    <Window>
       <DockPanel>
          <StatusBar Height="23" DockPanel.Dock="Bottom"/>
          <Menu Height="23" DockPanel.Dock="Top"/>
    
          <!-- Main Window Content here -->
       </DockPanel>
    </Window>
    

    从这些元素中删除 MarginVerticalAlignment 属性。

    编辑:像这样更正您的 XAML:

    <Window x:Class="Textpad.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Textpad" Height="324" Width="390" FontFamily="Tahoma">
        <DockPanel>
    
            <Menu Height="23" DockPanel.Dock="Top">
               <!-- MenuItems Here -->
            </Menu>
    
            <StatusBar Height="23" DockPanel.Dock="Bottom">
                <StatusBarItem Content="Amesinlola Tijesunimi is my Name and baseball is the game" />
            </StatusBar>
    
           <RichTextBox Margin="0,21" TextChanged="richTextBox1_TextChanged" VerticalContentAlignment="Top"/>
    
        </DockPanel>
    </Window>
    

    【讨论】:

    • 如果我删除垂直对齐属性,我的状态栏会转到我的富文本框的中间
    • @PreciousTijesunimi 您需要使用DockPanel。发布完整的 XAML。
    • 对不起,如果我打扰了你,但请我删除网格
    • @precioustijesunimi 是的。在这种情况下,DockPanel 会更好地为您服务。
    • 请问我有一个奇怪的行为,richtextbox 停留在表单的中心而不是停靠
    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多