Tôi đang cố viết một dự án học tập WPF đơn giản, tạo ra một bộ nút bên trong cửa sổ chính có thể định lại. Có một số Button
cho mỗi mục nhập trong bộ sưu tập và nội dung của bộ sưu tập đó có thể thay đổi trong thời gian chạy. Tôi muốn các nút để lấp đầy toàn bộ cửa sổ (ví dụ: 1 nút @ 100% chiều rộng, 2 nút @ 50% chiều rộng, 3 nút @ 33% chiều rộng, v.v ... ở độ cao 100%). Một phiên bản đơn giản của những gì tôi đã viết cho đến nay là:Điều khiển kéo dài để điền vào ItemsControl
<ItemsControl x:Name="itemscontrolButtons" ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Tag="{Binding}">
<TextBlock Text="{Binding}" />
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
...
List<string> listButtonTexts = new List<string>() { "Button1", "Button2" };
...
itemscontrolButtons.DataContext = listButtonTexts;
Điều này dẫn đến điều này:
tôi đã không thể làm cho các nút căng để phù hợp với chiều rộng và nỗ lực của tôi để sử dụng Grid
thay vì StackPanel
là không kết quả. Sau đó, như là một cải tiến tùy chọn, tôi sẽ đánh giá cao các đề xuất về cách điều chỉnh sao cho nếu có quá nhiều nút mà chúng không thể vừa với một đường thẳng hoặc hẹp hơn ngưỡng, nó sẽ quấn lên một dòng mới (do đó giảm một nửa chiều cao của nút nếu đi từ 1 đến 2 hàng).
Tôi muốn nhấn mạnh rằng tôi muốn biết cách thực hiện điều này theo cách WPF. Tôi nhận ra tôi có thể tiêu thụ các thông báo thay đổi kích thước cửa sổ và thay đổi kích thước các điều khiển một cách rõ ràng, và đó là cách tôi đã làm nó với MFC hoặc WinForms, nhưng từ những gì tôi đã đọc đó không phải là những điều như vậy nên được thực hiện với WPF.
Đó chỉ là những gì tôi cần cho mục tiêu chính của tôi, cảm ơn bạn. – Gregyski
Nhờ câu trả lời của Nir, tôi đã có thể đáp ứng các tiêu chí tùy chọn. Chi tiết nằm trong câu trả lời tôi đã đăng cho câu hỏi này. Nó được đề nghị trên Meta mà tôi xử lý tình huống này theo cách này. http://meta.stackexchange.com/questions/14306/my-improved-answer-based-on-anothers-accepted-answer-for-my-own-question – Gregyski
Cảm ơn! Đây chỉ là những gì tôi đã mất tích cho khoảng cách các mục và bảng điều khiển của họ đồng đều trong một ListBox. –