我很难让我的列表盒项目延伸到整个列表框的宽度。
下面是我的列表框的xaml
<ListBox x:Name="MyListBox"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
HorizontalContentAlignment = "Stretch"
Margin="0,10,0,0"
ItemsSource="{Binding Path=Users}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Grid.Column="0"
Grid.ColumnSpan="1"
Grid.Row="1"
Grid.RowSpan="3">
<ListBox.ItemTemplate>
<DataTemplate>
<local:MyListBoxTemplate/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我曾尝试过在其他帖子中找到以下建议,但这些建议对我来说并不管用:
Stretch
是因为我使用了一个单独的xaml文件作为数据模板吗?还是我的数据模板出了问题?有人对我还能尝试什么有什么建议吗?
我看到了某个地方,也许我可以将ListBoxItem宽度绑定到ListBox的实际宽度?
我对此非常陌生,所以如果我错过了一些非常简单/明显的东西,我会提前道歉!
以下是我的数据模板:
<Grid x:Name="LayoutRoot" HorizontalAlignment="Stretch" ShowGridLines="True" Height="20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*" />
<ColumnDefinition Width="30*" />
<ColumnDefinition Width="300*" />
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="10*" />
</Grid.ColumnDefinitions>
<Image x:Name="TwitterImageIcon"
Grid.Column="1"
Grid.ColumnSpan="1"
Source="{Binding Path=imageUrl}"
/>
<StackPanel Orientation="Horizontal" Grid.Column="2" Grid.ColumnSpan="1" HorizontalAlignment="Stretch" >
<TextBlock x:Name="TwitterUsernameTextBlock"
Text="{Binding Path=username,StringFormat='@\{0\} '}"/>
<TextBlock x:Name="TwitterFullNameTextBlock"
Text="{Binding Path=fullname}"/>
</StackPanel>
<Button x:Name="InfoButton"
Content="Info"
Grid.Column="3"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
<Border x:Name="StyleBorder" />
</Grid>
任何建议都非常感谢。
提前谢谢。
更新:当添加:
<ListBox...>
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.Resources>
</ListBox>
然而,它的工作影响到国际大都市主题,因此,当列表框项目悬停时和被选中时,列表框的高亮度与国际大都市主题的其他部分不同。
发布于 2012-03-18 17:03:29
试试这个,在你的列表箱里:
<ListBox...>
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.Resources>
</ListBox>
EDIT1 (对不起我的英语不好)
在ListBoxItem
上查找CoreStyles.xaml样式(查找x:Key="DefaultListBoxItemStyle"
)。在该样式中,找到名为ContentControl的x:Name="contentControl"
并添加HorizontalContentAlignment
属性,更改后代码将如下所示:
<ContentControl x:Name="contentControl" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" >
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" VerticalAlignment="Center" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="7"/>
</ContentControl>
现在您可以删除我在第一个答案中显示的Listbox.Resources
.如果您不希望将此行为应用于所有的listBoxes,则可以复制此样式并给它一个不同的键。
https://stackoverflow.com/questions/9759724
复制相似问题