2
我想爲我的ListView
創建自定義DataTemplate
。 我有一個簡單class Person
:ListView:將自定義數據模板中的網格拉伸至最大寬度?
public class Person
{
public string Name{get;set;}
public SolidColorBrush SomeColor{get;set;}
public Person(string name){ Name = name; }
}
我的我的ListView
的ItemsSource
屬性設置爲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>
現在的問題是,Grid
不能展開到ListView的完整可用寬度。這只是一個很小的可能20-30px寬度的Grid
。 在搜索Google後,我添加了ListView.ItemContainerStyle
,但它沒有幫助。
關於如何解決這個問題的任何建議?