Tor*_*enJ 2 c# windows-runtime winrt-xaml windows-store-apps
我想DataTemplate为我创建一个自定义ListView.我有一个简单的class Person:
public class Person
{
public string Name{get;set;}
public SolidColorBrush SomeColor{get;set;}
public Person(string name){ Name = name; }
}
Run Code Online (Sandbox Code Playgroud)
我将ItemsSourcemy 的属性设置ListView为a List<Person> persons.如果我只是使用DisplayMemberPath=Name一切正常,但我想有一个自定义模板来显示Name和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>
Run Code Online (Sandbox Code Playgroud)
这是我尝试实现我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>
Run Code Online (Sandbox Code Playgroud)
问题是现在Grid不会扩展到ListView的完整可用宽度.它只是Grid20-30px宽度的一小部分.搜索谷歌后,我添加了ListView.ItemContainerStyle但没有帮助.
关于如何解决这个问题的任何建议?
| 归档时间: |
|
| 查看次数: |
2519 次 |
| 最近记录: |