2009-08-12 9 views
2

私は一定の幅のリストボックスを持っています。リストボックス内の項目の数は異なります。リストボックスの内容を中央に配置する方法はありますか? ListBoxItemの "コンテンツプレゼンター"は、リストボックスの幅全体に対して中央に配置するのではなく、テンプレート内に各アイテムを配置します。銀色のリストボックスの中芯の内容

ご返信いただきまして申し訳ありません。問題は、リストボックスで使用していたItemsPanelTemplateの幅にありました。以前の幅は925に設定されました。この幅をMaxWidthに変更しました。コード:

<ItemsPanelTemplate x:Key="ItemsPanelKey"> 
     <Contact:AnimatedWrapPanel HorizontalAlignment="Center" MaxWidth="925"> 
      <Contact:AnimatedWrapPanel.Interpolation> 
       <interpolate:BackInterpolation Amplitude=".5" Suppression=".2" EdgeBehavior="5"/> 
      </Contact:AnimatedWrapPanel.Interpolation> 
     </Contact:AnimatedWrapPanel> 

    </ItemsPanelTemplate> 

答えて

0

よく分かりませんが、希望するものは、各アイテムを集中させるカスタムアイテムテンプレートです。私が正しければ、テンプレートはリストボックスと同じ固定幅でなければならないというのは難しいことです。だからあなたのリストボックスには、いくつかのオブジェクトはFooとFoo.Textが表示されるシンプルなテキストプロパティで含まれている場合、XAMLでそうようにそれを行うことができます:

<ListBox x:Name="TheListBox" Width="300"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Grid Width="300"> 
      <TextBlock Text="{Binding Text}" HorizontalAlignment="Center" /> 
     </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    </ListBox> 

と背後にあるコードのようなものが含まれています

List<Foo> ListOfFoo = new List<Foo>(); 
ListOfFoo.Add(new Foo(){Text="Something"}); 
ListOfFoo.Add(new Foo(){Text="Something Else"}); 
ListOfFoo.Add(new Foo(){Text="Something Completely Different"}); 

TheListBox.ItemsSource = ListOfFoo; 

もしそれがもっと複​​雑であるか、それを動作させることができないなら、いくつかのコードを投稿すればそこから行くでしょう。

+0

私の悪いです。リストボックスの項目は水平に配置され、正常に正常に動作します。しかし、私はItemsPanelTemplateとしてラップパネルを持っています。このラップパネルの幅を設定しないと、リストの項目は中央で水平に整列されます。しかし、アイテムの数が少ない場合に、より多くのアイテムがラップアラウンドされるようにするには、アイテムを左に揃えるように幅を設定します。私はラップパネルの中央に水平方向の配置プロパティを設定しました。 –

+1

使用しているxamlを投稿できますか? – Raumornie

関連する問題