私が持っているウィンドウにはDockPanel
、いくつかのファイルを指定する のリストがあります。各 DockPanel には、TextBox (パス用) とボタン (ファイルを参照するため) があります。
ここで問題を説明するために、単純な 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"
たが、それはボタンを再び小さくするだけで、TextBoxを広くしません(でもHorizontalAlignment="Stretch"
)。
この順序でコントロールが必要な理由は、ユーザーがtab
ウィンドウ内を移動するために使用するときに、ボタンの前に TextBox に到達するようにするためです。私は設定を調べましTabIndex
たが、ハッキリしているように感じます。WPF のお気に入りの機能は、XAML でコントロールが定義されている順序でタブインデックスが配置されることです。言うまでもなく、おそらくウィンドウ内のすべてに手動で TabIndex を設定する必要があります。
私には、 TextBox.HorizontalAlignment の設定が尊重されていないようです。最初のコントロールで可能な限り多くのスペースを使用しながら、タブ オーダーを保持するにはどうすればよいですか?