2008-12-30 43 views
4

我與ItemsPanelTemplate一個列表框設置爲UniformGrid與行數= 6和cols = 7WPF - 爲什麼列表框項目不填uniformgrid

我想在列表框中的項目,以填補他們的空間。

我正在使用字典中定義的數據完成。

我的模板的外部控制是Horizo​​ntalAlignment = Stretch 和VerticalAlignent = Strectch的邊框,但模板不會填充列表框項目空間?

任何想法? 馬爾科姆

+0

您能否提供樣品XAML? – huseyint 2008-12-30 08:13:29

回答

2

編輯:增加了額外的信息,並回答了問題。

一個有趣的方式讓ListBoxItems均勻與其他項目是對Grid的共享範圍功能,在您的DataTemplate

例子:

<ItemsControl Grid.IsSharedSizeScope="True" ItemsSource="{Binding Path=Items}"> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition SharedSizeGroup="Content"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Grid.Column="1" Text="{Binding Path=Name}"> 
     </Grid> 
     </StackPanel> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

現在所有的TextBlocks將在相同大小的佈局。如果沒有設置特定的寬度/高度,子項目應該填充所有可用空間。

或者,您可以設置控件的寬度和高度來拉伸,但我認爲使用Grid.SharedScopeSize是獲得同樣效果的更優雅的方法。

10

回答此問題可將Horizo​​ntalContentAligment和VerticalContentAlignment設置爲在LISTBOX而不是數據模板上拉伸。