网格列不会在旋转时调整大小

时间:2011-12-20 15:46:57

标签: silverlight xaml windows-phone-7

我正在开发一个WP7应用程序。在主页上我有一个ListBox。每个项目都包含一个StackPanel和一个Button。 StackPanel中项目的大小是变化的,Button的宽度始终是75px。我希望Stackpanel部分的宽度始终是屏幕宽度的80%。我使用以下DataTemplate作为ListBox:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="0" Margin="0,0,0,17" toolkit:TiltEffect.IsTiltEnabled="True">
        <TextBlock Text="{Binding ItemDescription}" TextWrapping="Wrap" Margin="12,0,0,0" Style="{StaticResource PhoneTextTitle2Style}" Foreground="{StaticResource PhoneAccentBrush}" />
        <TextBlock Text="{Binding ItemLocation}" TextWrapping="Wrap" Margin="12,-6,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
        <TextBlock Text="{Binding ItemDate}" TextWrapping="Wrap" Margin="12,6,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
    </StackPanel>
    <Button Grid.Column="1" x:Name="deleteTaskButton" Width="75" Height="75" BorderThickness="0" Margin="0,-18,0,0" Click="DeleteTaskButtonClick">
        <Button.Template>
            <ControlTemplate>
                <Image Source="{Binding ElementName=RemindersListBox, Path=DataContext.ImgSource}" Height="48" Width="48" />
            </ControlTemplate>
        </Button.Template>
    </Button>
</Grid>

我使用了此question的解决方案。但网格没有调整大小。如何在横向和纵向模式下将网格的第一列设置为宽度的80%?这已经让我忙了几个小时......

提前致谢!

2 个答案:

答案 0 :(得分:2)

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

应该为您提供80/20的列大小分割。

答案 1 :(得分:2)

问题是listboxitem没有拉伸到整个宽度。使用此方法来处理此问题:WP7 list width issue when orientation changs