2011-01-24 4 views
1

私のXAMLで複数の列リストビューで動的にデータをバインドすることができません:は、WPF(VS2010)

listViewResult.Items.Clear();  

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

しかし、値がマルチで表示を取得されていません。

<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#のコードがあります列リストビュー

答えて

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

ああ、確かに、私はperticular条件に基づいて行の背景色を変更することができますyou.Howフロン1人のより多くの助けを必要と... :) –

+0

をそれに答えますか? ? – Sandy

+0

行をカスタマイズする方法については、私の答えを見てください:http://stackoverflow.com/questions/4728561/wpf-datagrid-hide-complete-row-through-databinding/4728719#4728719基本的には、行のスタイルを定義し、DataTriggerを使用して、条件に基づいた背景を変更する必要があります。 –

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> 

外観を詳細に制御するには、DataTemplateを使用してCellTemplateを作成する方法があります。例えば:私はそれに答えていながら

 <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> 
関連する問題