我想为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=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>
:
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
,但它没有帮助。
有关如何解决此问题的任何建议?
答案 0 :(得分:8)
尝试在HorizontalContentAlignment
中将Stretch
设置为ItemContainerStyle/Style/Setter
。