我有一个窗口,里面有一些 DockPanel
列表,用来指定一些文件。每个 DockPanel 都有一个文本框(用于路径)和一个按钮(用于浏览文件)。
我在这里重新创建了一个简单的 WPF 页面以演示问题:
<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>
问题在于我希望按钮位于文本框的右侧,但这会使得文本框非常小。因为DockPanel的LastChild是按钮,会占用剩余的空间。我已经尝试通过重新排列并设置LastChildFill="False"
来改变这种情况,但这只会使按钮再次变小,而不是使文本框变宽(即使使用HorizontalAlignment="Stretch"
也是如此)。我之所以想要以那种顺序控制是因为我希望用户在使用
tab
键在窗口中导航时先到达文本框,然后再到达按钮。我研究了设置TabIndex
,但这感觉很玩票。WPF的一个喜欢的功能是TabIndex按照在XAML中定义控件的顺序进行排序。更不用说我可能需要手动设置窗口中的每个控件的TabIndex。对我来说,似乎并没有遵守TextBox.HorizontalAlignment的设置。 如何使第一个控件使用尽可能多的空间,但仍然保留选项卡顺序?