Windows 8.1,XAML绑定列表视图但不显示第一项

时间:2014-01-07 15:58:26

标签: c# windows xaml

以下是我的代码

    <ListView ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.VerticalScrollBarVisibility="Hidden" HorizontalAlignment="Stretch" VerticalContentAlignment="Stretch" VerticalAlignment="Stretch" SelectionMode="None" Grid.Row="3" Grid.ColumnSpan="3" CanReorderItems="False" CanDragItems="False" IsRightTapEnabled="False" IsItemClickEnabled="True" BorderBrush="White" Background="White" ItemClick="lvGroupInfoCVS_ItemClick"  RequestedTheme="Light" FontFamily="Helvetica" x:Name="lvGroupInfoCVS" ItemsSource="{Binding Source={StaticResource MyCollection}}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Width="{Binding ElementName=lvGroupInfoCVS, Path=ActualWidth}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="4*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition  Width="1*"/>
                        </Grid.ColumnDefinitions>
                    <TextBlock Grid.Row="0" FontFamily="Helvetica" Grid.Column="0" Text="{Binding Name}" Foreground="DarkGray" FontSize="23" HorizontalAlignment="Left"/>
                    <TextBlock Grid.Row="0"  FontFamily="Helvetica" Grid.Column="1" Text="{Binding EventDate}" Foreground="DarkGray" FontSize="23" HorizontalAlignment="Center"/>
                    <TextBlock Grid.Column="2" FontFamily="Helvetica" Grid.Row="0"  Text="{Binding StartTime}" Foreground="DarkGray" FontSize="23" HorizontalAlignment="Center"/>
                    </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

我的所有数据都显示正确,但我的第一项是空白的,尽管它是可点击的。我尝试改变宽度和高度,但我仍然有同样的问题

环境:Windows 8.1,XAML,C#

我试着查看其他类似的stackoverflow问题,但没有运气

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我刚修好了! 我们两个都尝试通过绑定到Grid Width来设置ListView.ActualWidth,但是在第一个元素被渲染之前它不起作用,所以第一个元素总是有0个宽度:(

要解决此问题,请执行此操作(基于this answer@Kievic

  

使用a设置ListView.ItemContainerStyle   Horizo​​ntalContentAlignment setter可以解决问题。

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

答案 1 :(得分:0)

你可以这样做:

<ListView SelectedIndex="0">

如果您希望它在加载时选择列表中的第一项。