ListBoxItem不会在ListBox中拉伸

时间:2014-10-22 11:43:42

标签: c# xaml silverlight windows-phone-8

我正在为Windows Phone 8(silverlight)创建一个应用程序。我想在ListBox中的两列中显示数据。我使用this method。在本文中是一个包含代码的演示项目。以下是输出的基本代码:

<ListBox x:Name="ItemsListBox">
<ListBox.ItemTemplate>
    <DataTemplate>
        <ItemsControl ItemTemplate="{StaticResource ItemDataTemplate}" ItemsSource="{Binding}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </DataTemplate>
</ListBox.ItemTemplate>

它有效,但数据不伸展,右边是自由空间。 enter image description here

我尝试了很多选项

<ListBox...>
<ListBox.Resources>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
</ListBox.Resources>

...

插入Horizo​​ntalAlignment =“Stretch”

但它们不起作用。告诉我如何拉伸数据宽度?我需要让每列占据总宽度的一半。

这是我的DataTemplate代码

<DataTemplate x:Key="ItemDataTemplate" >


        <Grid HorizontalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition Width="4*"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>




            <Button Grid.Column="1" Margin="5" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" >
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition Width="4*"/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>

                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>

                    <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}"  />
                    <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding AddInfo}"  />
                </Grid>
            </Button>

        </Grid>


</DataTemplate>

1 个答案:

答案 0 :(得分:0)

在您的数据模板中,您应该添加高度=&#34; 100%&#34;对于垂直拉伸或宽度=&#34; 100%&#34;用于水平拉伸 这是在文本块中

</Grid.RowDefinitions>

                <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}" Height="//some vale in decimal" Widht="//some vale in decimal" />
                <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding AddInfo}" Height="//some vale in decimal" Widht="//some vale in decimal" />
            </Grid>