2013-04-15 84 views
2

我想爲我的ListView創建自定義DataTemplate。 我有一個簡單class PersonListView:將自定義數據模板中的網格拉伸至最大寬度?

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> 

這是我試圖實現我DataTemplateListView

<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,但它沒有幫助。

關於如何解決這個問題的任何建議?

回答

8

嘗試在您的ItemContainerStyle/Style/Setter中設置HorizontalContentAlignmentStretch

相關問題