我有一个使用以下模板的ListBox:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<Image Source="{Binding Property3}" Grid.Column="0" HorizontalAlignment="Left" Height="64" Width="64"/>
<TextBlock Grid.Column="1" Text="{Binding Property1}"/>
<TextBlock Grid.Column="2" Text="{Binding Property2}" HorizontalAlignment="Right"/>
</Grid>
我遇到的问题是中间栏。中间列中文本的长度决定了网格的宽度。在不使用宽度的精确值的情况下,使网格扩展到页面宽度的100%的最佳方法是什么?或者这不可能吗?我从这里尝试了很多建议(例如,在ListBox上设置HorizontalContentAlignment)无济于事。
编辑:这是完整页面,用于突出显示问题的最小代码:
<phone:PhoneApplicationPage
x:Class="FoursquareDemo.SandboxPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="ItemTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<Image Source="{Binding Property3}" Grid.Column="0" HorizontalAlignment="Left" Height="64" Width="64"/>
<TextBlock Grid.Column="1" Text="{Binding Property1}"/>
<TextBlock Grid.Column="2" Text="{Binding Property2}" HorizontalAlignment="Right"/>
</Grid>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
<ListBox x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Collection}" />
答案 0 :(得分:1)
找到解决方案:
ListBoxItems不会扩展到ListBox的整个宽度。在这种情况下,最好使用LongListSelector。这似乎有些过分,但它完成了工作。
答案 1 :(得分:0)
有两种方法可以解决问题。
1)将网格的边距设置为边距=&#34; 0,0,0,0&#34;
这基本上将Grid的偏移量设置为0,用于&#34; Left,Top,Right,Bottom&#34;
2)如果上述方法不起作用,请检查父网格。并将父网格的边距设置为与上述相同。如果根据您的设计更改顶部和底部的值,则可以。但是,如果您希望网格的长度占据整个宽度,请确保将左右边距值设置为0.