Trong cửa sổ tôi có một danh sách các số DockPanel
để chỉ định một vài tệp. Mỗi DockPanel có một TextBox (cho đường dẫn) và một nút (để duyệt tìm một tập tin).WPF Dockpanel con đầu tiên sử dụng không gian còn lại
tôi đã tái tạo một trang WPF đơn giản để demostrate vấn đề ở đây:
<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>
Vấn đề là tôi muốn nút ở bên phải của hộp văn bản, nhưng điều đó làm cho textbox để được thực sự nhỏ từ LastChild của DockPanel là nút nó sử dụng hết dung lượng còn lại. Ive đã cố gắng thay đổi điều này bằng cách xáo trộn chúng xung quanh và thiết lập LastChildFill="False"
nhưng điều đó chỉ làm cho nút nhỏ lại, không làm cho TextBox rộng (ngay cả với HorizontalAlignment="Stretch"
).
Lý do tôi muốn điều khiển theo thứ tự đó là tôi muốn người dùng truy cập Hộp văn bản trước nút khi sử dụng tab
để điều hướng trong cửa sổ. Tôi nhìn vào thiết lập TabIndex
nhưng nó cảm thấy hacky, tính năng yêu thích của WPF là tabindex là theo thứ tự các conrols được định nghĩa trong XAML. Chưa kể rằng tôi có thể sẽ phải tự đặt TabIndex trên mọi thứ trong Cửa sổ.
Với tôi, có vẻ như thiết lập của TextBox.HorizontalAlignment không được tôn trọng. Làm cách nào để kiểm soát đầu tiên có thể sử dụng nhiều không gian nhất có thể nhưng vẫn giữ nguyên thứ tự tab?
+1 bởi vì nó không có vấn đề TabOrder. Nếu ai đó muốn tránh việc gõ ColumnDefinitions trong các kịch bản đơn giản như vậy, hãy xem giải pháp này: http://rachel53461.wordpress.com/2011/09/17/wpf-grids-rowcolumn-count-properties/ – surfen