center在silverlight中对齐列表框的内容

时间:2009-08-12 12:03:55

标签: silverlight listbox alignment center

我有一个具有一定固定宽度的列表框。列表框中的项目数量各不相同。有没有办法集中列表框的内容? ListBoxItem的“Content Presenter”将每个项目置于其模板中心,而不是相对于整个列表框宽度居中。

很抱歉没有回复。问题在于我在Listbox中使用的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>

1 个答案:

答案 0 :(得分: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;

如果它更复杂或者你无法使其发挥作用,请发布一些代码,我们将从那里开始。