2009-10-15 144 views

回答

4

如果你想讓你的物品都具有相同的尺寸,我會去UniformGrid。它是被忽視的控制之一,在這種情況下可能非常有用。

這是我做了一個快速和骯髒的工具欄:

<ItemsControl ItemsSource="{Binding}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Button Command="{Binding}" 
        ToolTip="{Binding Tooltip}"> 
       <StackPanel Orientation="Vertical"> 
        <Image Height="16" 
          Width="16" 
          RenderOptions.BitmapScalingMode="NearestNeighbor" 
          Source="{Binding Image}" 
          HorizontalAlignment="Center" /> 
       </StackPanel> 
      </Button> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Rows="1" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 
+0

很酷。這工作。但是,我已經更改爲兩個listview,因爲它相當緊迫。不過,我會記得統一的網格,因爲我的測試相當具有決定性。 – 2009-10-15 19:44:42

3

聽起來就像你正在尋找WrapPanel。我認爲它不適用於ListView,但如果您希望通用項目容器使用WrapPanel作爲佈局,則可以使用ItemsControl執行此操作,並使用您想要的任何元素填充它。像下面這樣:

<ItemsControl> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.Items> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
    </ItemsControl.Items> 
</ItemsControl> 
+0

像你說的它似乎並沒有與WrapPanel工作,但我會做什麼是有兩個列表上的頂部彼此,因爲我知道我將擁有的最大物品的確切數量。 – 2009-10-15 19:10:54

+0

你可以得到這個與ListView一起工作。我已經完成了,但目前沒有代碼。做一些谷歌搜索,你會發現它。 – 2009-10-15 19:20:33

+0

它是否「有」是一個ListView? WPF非常靈活,您可以從許多不同的容器中獲得許多相同的列表顯示功能。容器通常不是您要查找的功能,而是模板(ItemsTemplate,ItemsPanelTemplate)。 – Rich 2009-10-15 19:22:17