我正在开发一个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%?这已经让我忙了几个小时......
提前致谢!
答案 0 :(得分:2)
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
应该为您提供80/20的列大小分割。
答案 1 :(得分:2)
问题是listboxitem没有拉伸到整个宽度。使用此方法来处理此问题:WP7 list width issue when orientation changs