В окне у меня есть список DockPanel
s, чтобы указать несколько файлов. Каждый DockPanel имеет TextBox (для пути) и кнопку (для поиска файла).WPF Dockpanel первый ребенок использует оставшееся пространство
Я воссоздан простая страница WPF для demostrate проблемы здесь:
<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>
Проблема заключается в том, что я хочу кнопку справа от текстового поля, но это приводит к тому, текстовому полю, чтобы быть действительно мало, так как LastChild DockPanel - это кнопка, в которой используется оставшееся пространство. Ive попытался изменить это, перетасовывая их и устанавливая LastChildFill="False"
, но это только заставляет кнопку быть маленькой снова, не делая TextBox широким (даже с HorizontalAlignment="Stretch"
).
Причина, по которой я хочу, чтобы элементы управления в этом порядке, я хочу, чтобы пользователь достиг текстового поля перед кнопкой при использовании tab
для навигации по окну. Я посмотрел в настройку TabIndex
, но он чувствует себя взломанным, любимым признаком WPF является то, что tabindex в порядке, в котором конроллы определены в XAML. Не говоря уже о том, что мне, вероятно, придется вручную установить TabIndex на все в окне.
Мне кажется, что настройка TextBox.HorizontalAlignment не соблюдается. Как я могу заставить первый элемент управления использовать как можно больше места, но все же сохранить порядок вкладок?
+1, потому что он не имеет TabOrder вопрос. Если кто-то хочет избежать ввода ColumnDefinitions в таких простых сценариях, посмотрите на это решение: http://rachel53461.wordpress.com/2011/09/17/wpf-grids-rowcolumn-count-properties/ – surfen