c# - ListView : Stretch grid in custom datatemplate to max width?

标签 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我的属性(property)ListViewList<Person> persons . 如果我只使用 DisplayMemberPath=Name一切正常,但我想要一个自定义模板来显示 NameSomeColor . 我创建了一个示例 Grid展示我希望它的样子(没有任何绑定(bind),仅作为示例):

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

现在的问题是 Grid不会扩展到 ListView 的全部可用宽度。这只是一个小Grid宽度可能为 20-30 像素。 在谷歌搜索后我添加了 ListView.ItemContainerStyle但这没有帮助。

关于如何解决这个问题有什么建议吗?

最佳答案

尝试在 ItemContainerStyle/Style/Setter 中将 Horizo​​ntalContentAlignment 设置为 Stretch

关于c# - ListView : Stretch grid in custom datatemplate to max width?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014644/

相关文章:

c# - 如何调用不在.NET中开发的Web服务

windows - 如何创建类似于 SkyDrive(或任何其他标准应用程序)的“关于”页面?

windows-runtime - 导航到其他页面后继续播放的全局 MediaElement

c# - LINQ to Sharepoint InsertOnSubmit 问题

c# - 内联函数

c# - 当单个对象属性是字符串时,如何防止将其转换为 DateTime

c# - 访问其他内部硬盘

c# - 欺骗用户控件以允许 "."命名空间

c# - WIN RT 中是否存在二进制序列化程序?

css - 使用 HTML5/JS 在 Windows 应用商店应用程序中实现内联滚动查看器