2011-01-24 35 views
1

我XAML是:無法將數據動態地綁定在多列列表視圖中WPF(VS2010)

<ListView Grid.Column="2" Grid.Row="2" Height="Auto" HorizontalAlignment="Left" Name="listViewResult" VerticalAlignment="Top" Width="Auto"> 
      <ListView.View> 
       <GridView x:Name="gridResult"> 
        <GridViewColumn Width="Auto" Header="Server" /> 
        <GridViewColumn Width="Auto" Header="Value"/> 
        <GridViewColumn Width="Auto" Header="Availability"/> 
        <GridViewColumn Width="Auto" Header="Status"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 

和C#代碼是:

listViewResult.Items.Clear();  

listViewResult.Items.Add(new { Server = "test1", Value = "ABX", Availability = "Yes", Status = "No"}); 

但該值不是在多得到顯示列列表

回答

4

這是因爲您沒有指定任何地方顯示。您可以指定一個GridViewColumn.CellTemplate或簡單地使用DisplayMemberBinding來指定要顯示什麼屬性數據的對象:

<ListView Grid.Column="2" Grid.Row="2" Height="Auto" HorizontalAlignment="Left" Name="listViewResult" VerticalAlignment="Top" Width="Auto"> 
    <ListView.View> 
     <GridView x:Name="gridResult"> 
      <GridViewColumn Width="Auto" Header="Server" DisplayMemberBinding="{Binding Server}" /> 
      <GridViewColumn Width="Auto" Header="Value" DisplayMemberBinding="{Binding Value}"/> 
      <GridViewColumn Width="Auto" Header="Availability" DisplayMemberBinding="{Binding Availability}"/> 
      <GridViewColumn Width="Auto" Header="Status" DisplayMemberBinding="{Binding Status}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

哦,當然,回答這個問題,而我回答它... :) – 2011-01-24 14:31:04

2

頁眉是列標題只是顯示的內容。如果您只想要與數據關聯的文本,則需要添加DisplayMemberBinding以將數據實際放入列中。

<ListView Grid.Column="2" Grid.Row="2" Height="Auto" 
      HorizontalAlignment="Left" 
      Name="listViewResult" 
      VerticalAlignment="Top" Width="Auto"> 
      <ListView.View> 
       <GridView x:Name="gridResult"> 
        <GridViewColumn Width="Auto" 
            Header="Server" 
            DisplayMemberBinding="{Binding Server}"/> 
        <GridViewColumn Width="Auto" 
            Header="Value" 
            DisplayMemberBinding="{Binding Value}"/> 
        <GridViewColumn Width="Auto" 
            Header="Availability" 
            DisplayMemberBinding="{Binding Availability}"/> 
        <GridViewColumn Width="Auto" 
            Header="Status" 
            DisplayMemberBinding="{Binding Status}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 

另一種方法是創建一個CellTemplate有一個DataTemplate,如果你想在外觀上更多的控制。例如:

 <GridViewColumn> 
      <GridViewColumnHeader Content="Status" /> 
      <GridViewColumn.CellTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" Margin="2,4"> 
         <Image Source="Resources\SomePicture.ico" 
           Height="24" 
           Width="24" 
           VerticalAlignment="Center" /> 
         <TextBlock Text="{Binding Status}" 
            Margin="2, 4" 
            VerticalAlignment="Center" /> 
        </StackPanel> 
       </DataTemplate> 
      </GridViewColumn.CellTemplate> 
     </GridViewColumn>