我有一个具有一定固定宽度的列表框。列表框中的项目数量各不相同。有没有办法集中列表框的内容? 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>
答案 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;
如果它更复杂或者你无法使其发挥作用,请发布一些代码,我们将从那里开始。