WP7 列表框项目填充列表框的宽度
我试图让列表框中的项目跨越列表框的整个宽度。我发现了几篇涉及 HorizontalContentAlignment="Stretch" 的帖子,但我无法让它在我的 WP7 应用程序中工作。这是我的列表框:
<ListBox Margin="8" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Collection}" >
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Black" CornerRadius="3" Background="#FFE88D34"
BorderThickness="1" HorizontalAlignment="Stretch" >
<Grid Background="Transparent" HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0" HorizontalAlignment="Stretch"
Margin="2"
FontSize="10"
Text="{Binding Property1}"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
我试图让橙色边框跨越列表框的整个宽度,以便所有列表项的大小相同,而不仅仅是 TextBlock 中文本的大小。
I am trying to get the Items in a ListBox to span the entire width of the ListBox. I have found several posts dealing with HorizontalContentAlignment="Stretch" but I have not been able to get it to work in my WP7 app. Here is my ListBox:
<ListBox Margin="8" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Collection}" >
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Black" CornerRadius="3" Background="#FFE88D34"
BorderThickness="1" HorizontalAlignment="Stretch" >
<Grid Background="Transparent" HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0" HorizontalAlignment="Stretch"
Margin="2"
FontSize="10"
Text="{Binding Property1}"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
I am trying to get the orange Border to span the entire width of the listbox so that all the list items are the same size and not just the size of the text in the TextBlock.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用以下静态资源作为列表框的 ItemContainerStyle:
Use the following static resource as ItemContainerStyle of Listbox:
这就是我的用途:
在这里找到更多矿石更少:http://timdams.wordpress.com/2011/11/30/creating-a-wp7-app-listbox-items-of-the-same-width/< /a>
This is what I do use for that:
more ore less found here: http://timdams.wordpress.com/2011/11/30/creating-a-wp7-app-listbox-items-of-the-same-width/
我相信这是测试版中的一个错误,因为 HorizontalContentAlignment 应该是它。
作为解决方法,您可能必须使用固定宽度值。
I believe this is a bug in the beta release, because HorizontalContentAlignment should be it.
as a workaround you might have to use a fixed width value.
约翰·加德纳 (John Gardner) 似乎认为这是 Beta 版的一个缺陷。它在“普通的旧式”Silverlight 中运行良好,但在 Phone 中会产生奇怪的中心区域。然而,要过去很容易。
删除/注释掉上面列表框中的 ListBox.ItemContainerStyle 条目。
在 Blend 中,在“对象和时间轴”面板中选择列表框,单击鼠标右键,然后选择“编辑其他模板/编辑生成的项目容器 (ItemContainerStyle)/编辑副本...”为新样式选择名称/键和位置
找到 ContentContainer 控件,并将其水平内容对齐方式设置为绑定到使用此模板的项目中设置的水平内容对齐方式 (HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" ),如下所示:
:已经告诉 ContentControl 它应该如何对齐其(咳咳)内容,结果应该是您所期望的。
Looks like John Gardner is on point with this being a bit of a defect in the Beta. It works fine in "plain old" Silverlight, but yields oddly-centered areas in the Phone. It is easy enough to work past, however.
Get rid of / comment out the ListBox.ItemContainerStyle entry in your listbox, above.
In Blend, select your ListBox in the Objects and Timeline panel, right click, and select Edit Additional Templates / Edit Generated Item Container (ItemContainerStyle) / Edit a Copy... Choose a name/key and location for the new style resource.
Locate the ContentContainer control, and set its Horizontal Content Alignment to Bind to the Horizontal Content Alignment set in the item consuming this template, (HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" ) as follows:
Once you've told the ContentControl how it should align its (ahem) content, the results should be what you expected.