我正在嘗試編寫一個簡單的WPF學習項目,它在可調整大小的主窗口內創建一組按鈕。每個集合中的條目將有一個Button
,並且該集合的內容在運行時可能會有所不同。我希望按鈕填滿整個窗口(例如,100%寬度的1個按鈕,寬度50%的2個按鈕,寬度33%的3個按鈕等)。什麼我至今寫一個簡化版本是:拉伸控件填充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;
這導致了這個:
我已經無法使按鈕被拉伸以適應寬度和我的嘗試使用Grid
而不是StackPanel
是徒勞的。
然後,作爲一個可選的改進,我將不勝感激關於如何調整它的建議,以便如果有太多的按鈕,他們無法適合一條線或窄於閾值,它會包裝到一個新的線(如果從1行到2行,則將按鈕高度減半)。
我想強調一下,我想知道如何做到這一點WPF方式。我意識到我可以使用窗口大小調整消息並顯式調整控件的大小,這就是我如何使用MFC或WinForms完成的,但從我讀過的內容來看,並不是WPF應該如何完成這些操作。
這正是我需要的主要目標,謝謝。 – Gregyski 2009-08-13 15:07:23
感謝Nir的回答,我能夠完成可選標準。詳情在我發佈到這個問題的答案中。在Meta上推薦我這樣處理這種情況。 http://meta.stackexchange.com/questions/14306/my-improved-answer-based-on-anothers-accepted-answer-for-my-own-question – Gregyski 2009-08-17 23:53:43
謝謝!這正是我所缺少的將項目及其面板均勻分佈在列表框中的缺失。 – 2013-03-15 01:47:50