繁体   English   中英

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

[英]ListView: Stretch grid in custom datatemplate to max width?

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

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

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

我将ListViewItemsSource属性设置为List<Person> persons 如果我只是使用DisplayMemberPath=Name一切正常,但我想有一个自定义模板来显示NameSomeColor 我创建了一个示例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>

这是我尝试为ListView实现我的DataTemplate

<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>

现在问题是Grid没有扩展到ListView的完整可用宽度。 它只是一个20-30px宽的小Grid 搜索谷歌后,我添加了ListView.ItemContainerStyle但它没有帮助。

关于如何解决这个问题的任何建议?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM