绑定宽度时ListView第一项缺失

时间:2014-11-24 11:42:16

标签: xaml windows-phone-8.1

我有这个xaml代码:

<ListView Name="MyList" ItemsSource="{Binding MyItems}"
        ScrollViewer.HorizontalScrollMode="Disabled" >
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Width="{Binding ElementName=MyList, Path=ActualWidth}">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="100"/>
                        <ColumnDefinition Width="50"/>
                    </Grid.ColumnDefinitions>
                    <StackPanel Orientation="Vertical" Grid.Column="0" Grid.ColumnSpan="2" >
                        <TextBlock Text="{Binding aaa}" />
                        <TextBlock Text="{Binding bbb}" />
                        <TextBlock Text="{Binding ccc}" 
                            TextWrapping="WrapWholeWords" TextTrimming="WordEllipsis" Height="25" MaxHeight="25"  Margin="0,0,10,0" />
                    </StackPanel>
                    <TextBlock Grid.Column="1" Style="{StaticResource ListTitle}" Text="{Binding restaDaPagare}"
                                   HorizontalAlignment="Right" Margin="0,0,10,0" />
                    <Canvas Grid.Column="2" Height="50" Width="50" Background="{StaticResource GrayBrush}"></Canvas>
                    <Image Grid.Column="2" Source="/Images/img.png" 
                                   Height="50" Width="50" MinHeight="50" MinWidth="50"/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

出于某些原因,如果我使用此指令(第5行):

<Grid Width="{Binding ElementName=MyList, Path=ActualWidth}">

MyList的第一项消失。 如果我使用此代码:

<Grid Width="400">

一切运作良好......除了我不想使用静态宽度。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

您可以尝试不为网格设置任何宽度(在模板中)并将其添加到ListView

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

这个想法是从这个question

中“取走”的