2011-12-15 22 views
0

2つのusercontrol、listviewを持つusercontrol、およびいくつかの他のコントロールを持つusercontrolを含むウィンドウがあります。ListView列の数を動的に設定する方法

このような何か:

+-------------------------------------------------+ 
| header stuff         | 
+---------------------------+---------------------+ 
| usercontrol with listview | another usercontrol | 
+-------------------------------------------------+ 
| footer stuff         | 
+-------------------------------------------------+ 

問題:画面の周りに2〜3列のを見て、その唯一の可能な低解像度で、あなたはthrid列を表示するためにスクロールする必要があります。幅に応じて1,2列または3列を表示するかどうかを動的に設定することで、水平スクロールを避けたい。もう1つの問題は、名前が と非常に長くなる可能性があるため、リストビュー内の項目の幅はすべて最長の名前と同じ幅になります。リストビューのための

コード:

<ListView Name="lstContacts" 
ItemsSource="{Binding Path=Contacts}" 
IsSynchronizedWithCurrentItem="True" 
ItemContainerStyle="{StaticResource RoundedItem}" 
SelectionMode="Single" 
HorizontalContentAlignment="Center"  
VerticalAlignment="Top" 
HorizontalAlignment="Stretch" > 
<ListView.ItemTemplate> 
    <DataTemplate> 
      <StackPanel Orientation="Vertical" Margin="3"> 
       <TextBlock FontWeight="Bold" FontSize="20" Text="{Binding  Path=Identifier}" HorizontalAlignment="Center" /> 
       <TextBlock FontSize="16" Text="{Binding Path=Name}"  HorizontalAlignment="Center" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Columns="3" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 

これを整理する方法上の任意のアイデア?

おそらくリストビューは悪い選択ですか?

ありがとうございました。 WrapPanelを仮想化するネイティブがないことを

<ItemsPanelTemplate> 
    <WrapPanel /> 
</ItemsPanelTemplate> 

注、これはアイテムの大規模なコレクションのためにうまく機能しません。

答えて

0

あなたがWrapPanelItemsPanelなどを使用することができます。

0

あなたの名前は、あなたが長くすることができますすることができるので:textwrappingと最大/最小の高さを有する 1 - 使用テキストボックス。 2つの名前のフォントサイズを小さくします。 3 ViewBoxに名前を入力して、それらが常に収まるようにします。 (ラップも)

関連する問題