2012-09-05 30 views
1

我在Metro應用程序中有以下代碼。 listview綁定到一個對象列表。我的問題是WrapGrid指定它們的寬度相等。但有些標題比其他標題長,因此寬度應設置爲自動寬度。但這不工作..任何人有任何想法?列表視圖中的WrapPanel(Metro)

<ListView> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
     <StackPanel Orientation="Horizontal" > 
       <TextBlock Text="{Binding Title}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapGrid Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 

回答

1

,我認爲這不是WrapGrid,但ListView控件本身通過的ListViewItem/ItemContainerStyle,使他們相同的大小。但我不認爲真的有解決方法。您可以使用自己的ItemsControl和自定義面板,或者計算每個項目的所需大小,並根據該大小 - 將項目放入類似於VariableSizedWrapGrid的項目中,並適當地設置RowSpan/ColumnSpan以匹配所需的大小。除此之外 - 您可以使所有項目足夠寬以適合所有內容,或者只需剪輯內容並在用戶單擊某個項目後在詳細視圖中顯示完整字符串。

2

這個工作對我來說:

<ListView.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapGrid ItemWidth="250" ItemHeight="80" MaximumRowsOrColumns="7" VerticalAlignment="Center" HorizontalAlignment="Center" /> 
    </ItemsPanelTemplate> 
</ListView.ItemsPanel> 

這裏的關鍵點是MaximumRowsOrColumns財產。玩得開心:)