WPF -

2016-08-22 5 views
0

をDataGridのために2つのリストをバインドこんにちは、私はデータグリッドへのこのオブジェクトのバインディングリストをしたいと思います:WPF -

class DataGridRows 
{ 
    public int Number{get; set;} 
    public int Avg {get; set;} 
    public List<Item> Items{get; set;} 
} 

class Item 
{ 
    public int Number{get; set;} 
    public int Avg {get; set;} 
} 

とXAMLは次のとおりです。

<DataGrid ItemsSource="{Binding DataGridRows, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Avg}" FontSize="10"/> 
     <DataGridTextColumn Binding="{Binding Number}" FontSize="10"/> 
     <DataGridTextColumn Binding="{Binding Items.Avg}" Header="{Binding Items.Number}"></DataGridTextColumn> 
    </DataGrid.Columns> 

これは正しくありません。内部のリストからデータを表示しないでください。

+1

'Items.Avg'は不正なバインディングパスです。 'Items [0] .Avg'とItems [0] .Number'は第1項目のデータを表示します。 *すべてのアイテムデータが必要な場合は、テンプレート列 – ASh

+0

を使用してください。ありがとうございますが、使用方法はわかりません。私にそれを見せてください? – bluray

+0

ViewModelを投稿できますか? DataGrid DataContextとは何ですか? – Jose

答えて

0
<DataGrid ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False"> 

> ItemsをItemsSourceとして指定します。リストにはItemのオブジェクトが含まれているため、ItemクラスのプロパティをDataGridにバインドできます。

C#

class DataGridRows 
{ 
    public List<Item> Items{get; set;} 
} 

class Item 
{ 
    public int Number{get; set;} 
    public int Avg {get; set;} 
} 

XAML

<DataGridTemplateColumn Width="230" Header="Header Text" IsReadOnly="True" CanUserResize="False" > 
    <DataGridTemplateColumn.CellTemplate > 
     <DataTemplate> 
     <TextBlock Text="{Binding Number}" Foreground="White" HorizontalAlignment="Left" TextAlignment="Left" Margin="3,0,0,0" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

<DataGridTemplateColumn Width="230" Header="Header Text" IsReadOnly="True" CanUserResize="False" > 
     <DataGridTemplateColumn.CellTemplate > 
      <DataTemplate> 
      <TextBlock Text="{Binding Avg}" Foreground="White" HorizontalAlignment="Left" TextAlignment="Left" Margin="3,0,0,0" /> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 

あなたは簡単にこのようDataGridTemplateを使用することができます。

+0

あなたはDataGridRowsがDataGrid DataContextであると仮定しています – Jose

+0

ありがとう、私のDataContextはDataGridRowsのリストです。 ライン1:私の表は、このように見なければならない 'DataGridRows.Number | DataGridRows.Avg | DataGridRows.Items [0] .NUMBER | DataGridRows.Items [0] .Avg' 回線2: ' DataGridRows.Number | DataGridRows.Avg | DataGridRows.Items [1] .Number | DataGridRows.Items [1] .Avg' DataGridRowのプロパティ番号と平均は行のタイトルであり、Itemsは値です。 – bluray