ListView:自定义datatemplate中的拉伸网格到最大宽度?

时间:2013-04-15 12:00:38

标签: c# windows-runtime windows-store-apps winrt-xaml

我想为DataTemplate创建自定义ListView。 我有一个简单的class Person

public class Person
{
    public string Name{get;set;}
    public SolidColorBrush SomeColor{get;set;}

    public Person(string name){ Name = name; }
}

我将ItemsSource的{​​{1}}属性设置为ListView。 如果我只是使用List<Person> persons,一切正常,但我希望有一个自定义模板来显示DisplayMemberPath=NameName。 我创建了一个示例SomeColor以显示我希望它看起来像(没有任何绑定,仅作为示例):

Grid

我尝试为<Grid Height="50"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto" MinWidth="10"/> </Grid.ColumnDefinitions> <TextBlock Text="Patrick" Grid.Column="0" TextAlignment="Right" Margin="0,0,10,0" VerticalAlignment="Center"/> <Rectangle Fill="Green" Grid.Column="1" /> </Grid>

实施DataTemplate
ListView

现在的问题是<ListView x:Name="listView" ItemsSource="{Binding ElementName=pageRoot, Path=FriendList ,Mode=OneWay}"> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalAlignment" Value="Stretch"/> </Style> </ListView.ItemContainerStyle> <ListView.ItemTemplate> <DataTemplate> <Grid HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto" MinWidth="10"/> </Grid.ColumnDefinitions> <TextBlock Text="{Binding Name}" Grid.Column="0"/> <Rectangle Fill="LimeGreen" Grid.Column="1"/> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> 没有扩展到ListView的完整可用宽度。它只是一个可能是20-30px宽度的Grid。 在搜索Google之后,我添加了Grid,但它没有帮助。

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:8)

尝试在HorizontalContentAlignment中将Stretch设置为ItemContainerStyle/Style/Setter