2011-01-24 78 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>