我想創建一個基於ItemsControl的WPF動態表。理想情況下,我希望集合中的每個元素都以特定的樣式呈現,並且在包裝並轉到下一行之前在表格中適合3。它幾乎完美地工作,唯一的問題是我有一個約30像素的空間寬度在列表中的條目3後。如果將數字相加,您將看到textblocks + margin分別等於140,因此其中3個是420 - 表格寬度是450,所以存在您會想到的問題。WrapPanel沒有填寫完整的所需寬度
很遺憾沒有。
如果我將第一個文本塊的寬度增加到110而不是105,那麼只需要一個小小的改變,這會使得3個條目435的總寬度仍小於450--這是表格的寬度,然後它只包含2個條目並在右側留下大量空白空間。
我懷疑它可能是由於WPF爲垂直滾動條保留的「保留空間」,因爲這通常是20寬,這將使我的可用空間爲430,並且435比這更高,所以它包裝。
我的問題是,我如何隱藏所有滾動條,並使它們根本不顯示或保留任何保留空間,以便我可以使用項目控件的全部寬度?下面
<ItemsControl ItemsSource="{Binding TradeCategories}" Grid.Row="1">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" MaxWidth="450" Background="{StaticResource SubTableRow}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" MaxWidth="150">
<TextBlock Width="105" FontSize="10" Text="{Binding CategoryName}" Foreground="{StaticResource SubTableText}" Margin="5,0,0,0"/>
<TextBlock Width="25" FontSize="10" Text="{Binding CategoryCount}" TextAlignment="Center" Background="{StaticResource SubTableHighlightCell}" Foreground="{StaticResource SubTableText}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
默認模板ItemsControl的沒有'ScrollViewer'。除非你自己重寫,否則它不應該包含任何滾動條。 –
你能看到任何滾動條嗎?我很確定'ItemsControl'沒有任何... ListBox有一個內部的ScrollViewer,但是ItemsControl沒有。 – Sheridan
嗯好吧,它不是那麼。但回到我原來的問題,我似乎無法填寫上表超過420寬度。包裝面板具有MaxWidth 450,因此應該適合寬度150的3個項目。但是,如果項目的寬度超過140,則每行只剩下兩個顯示,其餘的包裝將被覆蓋,因此包裝面板未充分利用 – NZJames