代码之家  ›  专栏  ›  技术社区  ›  Mizipzor

WPF Dockpanel第一个子级使用剩余空间

  •  30
  • Mizipzor  · 技术社区  · 14 年前

    DockPanel s来指定几个文件。每个DockPanel都有一个文本框(用于路径)和一个按钮(用于浏览文件)。

    <Page
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="150"
        Height="22">
        <DockPanel>
            <TextBox HorizontalAlignment="Stretch"/> <!-- path to file -->
            <Button Content="..." DockPanel.Dock="Right"/> <!-- button to browse for file -->
        </DockPanel>
    </Page>
    

    LastChildFill="False" HorizontalAlignment="Stretch"

    我希望控件按此顺序排列的原因是我希望用户在使用时到达按钮前面的文本框 tab 在窗口中导航。我看了看布景 TabIndex 但WPF最受欢迎的特性是,tabindex是按照XAML中定义的控件的顺序排列的。更不用说我可能需要手动设置窗口中所有内容的TabIndex。

    在我看来文本框.水平对齐不受尊重。 如何使第一个控件使用尽可能多的空间,但仍然保持选项卡顺序?

    2 回复  |  直到 14 年前
        1
  •  30
  •   John Bowen    14 年前

    如果你不想要DockPanel的行为,不要使用DockPanel。

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
    
        <TextBox />
        <Button Content="..." Grid.Column="1"/>
    </Grid>
    
        2
  •  48
  •   Jonathan Barez    14 年前

    这样做:

    <DockPanel LastChildFill="True">
        <Button Content="..." DockPanel.Dock="Right"/> <!-- button to browse for file -->
        <TextBox DockPanel.Dock="Left" HorizontalAlignment="Stretch"/> <!-- path to file -->
    </DockPanel>