我正在开发UWP应用程序,我发现ListView内容对齐问题。正如文档所说,我们应该使用ListView.VerticalContentAlignment属性来对齐内容,但我发现,该属性被忽略,而是使用默认值。
例如这个简单的应用程序:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ListView ItemsSource="{x:Bind Data}" VerticalContentAlignment="Top">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate x:DataType="x:String">
<TextBlock Text="{x:Bind}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
背后的代码就是这样:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
public List<string> Data { get; set; } = new List<string>()
{
"a","b","c","d","e"
};
}
然后设置ListView.VerticalContentAlignment。我检查了Live Visual Tree中的ListViewItemPresenter(TextBlock容器),默认值是那里,但忽略了,而是使用了ListViewItemPresenterVerticalContentAlignment。
Microsoft doc说,我应该使用ContentPresenter.VerticalContentAlignmentProperty
代替ListViewItemPresenterVerticalContentAlignmentProperty
。这只是错误,还是我做错了什么?有没有办法解决这个问题?
答案 0 :(得分:2)
也许您可以尝试修改ItemContainerStyle,如下所示:
<ListView ...>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Top" />
</Style>
</ListView.ItemContainerStyle>
</ListView
答案 1 :(得分:0)
ListView.VerticalContentAlignment将listview与表单顶部对齐。水平列表视图中的项目与中心对齐。尝试在textBlock上设置对齐
<ListView.ItemTemplate>
<DataTemplate x:DataType="x:String">
<TextBlock Text="{x:Bind}" VerticalAlignment="Top" />
</DataTemplate>
</ListView.ItemTemplate>