【问题标题】:Windows 8 XAML ListView Header not same sizeWindows 8 XAML ListView 标头大小不同
【发布时间】:2014-06-10 17:09:38
【问题描述】:

目前存在一个问题,即我的 ListView 的标题大于我的 ListView 项目,因此标题没有正确排列。我可以使用页眉上的边距来修复它,但肯定有合适的方法来解决这个问题吗?

<DataTemplate  x:Key="HeaderTemplate" >
    <Grid Height="36" Background="#99999999" Margin="0,0,5,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="3*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="3*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <TextBlock x:Uid="Name" TextWrapping="Wrap" HorizontalAlignment="Left" Text="Project" Grid.Column="0" Style="{StaticResource BodyTextBlockStyle}" />
        <TextBlock x:Uid="Qty" TextWrapping="Wrap" HorizontalAlignment="Left" Text="Qty" Grid.Column="1" Style="{StaticResource BodyTextBlockStyle}" />
        <TextBlock x:Uid="SubTotal" TextWrapping="Wrap" HorizontalAlignment="Left" Text="Sub Total" Grid.Column="2" Style="{StaticResource BodyTextBlockStyle}" />
        <TextBlock x:Uid="Total" TextWrapping="Wrap" HorizontalAlignment="Left" Text="Total" Grid.Column="3" Style="{StaticResource BodyTextBlockStyle}" />
    </Grid>
</DataTemplate>

// ...

<ListView x:Name="CartGridView" ItemsSource="{Binding CartItmes}" HeaderTemplate="{StaticResource HeaderTemplate}"
    Grid.Row="1" VerticalAlignment="Stretch" Width="auto" ItemContainerStyle="{StaticResource SimpleListViewItemStyle}">

    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Height="auto" Margin="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="3*"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="3*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Style="{StaticResource BodyTextBlockStyle}" HorizontalAlignment="Left"
                            Text="{Binding Name, Mode=TwoWay}"/>
                <TextBlock Grid.Column="1" Style="{StaticResource BodyTextBlockStyle}" HorizontalAlignment="Center"
                            Text="{Binding Qty, Mode=TwoWay}"/>
                <TextBlock Grid.Column="2" Style="{StaticResource BodyTextBlockStyle}" HorizontalAlignment="Left"
                            Text="{Binding SubTotal, Mode=TwoWay}"/>
                <TextBlock Grid.Column="3" Style="{StaticResource BodyTextBlockStyle}" HorizontalAlignment="Center"
                            Text="{Binding Total, Mode=TwoWay}"/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

【问题讨论】:

  • 尝试设置模板网格的 Width 属性。
  • 模板网格?你是说 grid.ColumnDefinitons 吗?
  • 不,我的意思是
  • 宽度已经有点正确了,问题是行会自动略微缩小(宽度)以适应滚动条等内容。我暂时刚刚完成了肮脏的手动边距调整,这样它看起来就不会出错。但是我会说(对于未来的读者),除非 sombody 有适当的方法这样做,否则我会说最好的解决方案是将标题作为 ListView 的第一行并通过条件禁用它是可选的并应用特殊样式让它看起来好像它不是表格的一部分。

标签: c# xaml listview windows-8.1


【解决方案1】:

将以下内容添加到您的 ListView 定义中

<ListView.ItemContainerStyle>
   <Style TargetType="ListViewItem">
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
  </Style>
</ListView.ItemContainerStyle>

【讨论】:

  • 请注意,对于(完整的)Windows 8.1,有一个重大更改。现在 ListView 的 ItemsPanel 必须有一个 VirtualizingStackPanel(参见后面的一些 cmets social.msdn.microsoft.com/Forums/en-US/…
猜你喜欢
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
相关资源
最近更新 更多