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>
4

1 に答える 1

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;

より複雑な場合や機能しない場合は、コードを投稿してください。そこから先に進みます。

于 2009-08-13T02:40:46.687 に答える