2016-03-14 44 views
1

我试图将列表中项目的属性绑定到数据网格。我有以下代码:数据绑定到列表的内容

<DataGrid Grid.Column="0" Name="LeftSettingsDataGrid" ItemsSource="{Binding Path=Data}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Setting Name" Binding="{Binding Path=Settings.SettingName}" /> 
     <DataGridTextColumn Header="Setting Type" Binding="{Binding Path=Settings.SettingType}" /> 
    </DataGrid.Columns> 
    </DataGrid> 

但是,这会产生一个空的网格视图。

数据是具有Settings列表的对象,它们是具有两个公共属性的对象:SettingNameSettingType

基本上,层次结构是这样的: 1.数据 1.设置 1. SettingName 2. SettingType

数据上下文被在主窗口中的构造设置,以LeftSettingsDataGrid.DataContext = Data;

为什么绑定不起作用呢?

+0

Path = Data将其替换为Path = Data.Settings和Path = Settings.SettingName by Path = SettingName和Path = Settings.SettingType by Path = SettingType – Coding4Fun

回答

2

见本作中,你的DataContext一棵树你有你显示尽可能多的项目列表,您的项目源设置,你的显示器件item.SettingName等

<DataGrid Grid.Column="0" Name="LeftSettingsDataGrid" ItemsSource="{Binding Path=Settings}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Setting Name" Binding="{Binding Path=SettingName}" /> 
     <DataGridTextColumn Header="Setting Type" Binding="{Binding Path=SettingType}" /> 
    </DataGrid.Columns> 
    </DataGrid> 

你的ItemsSource是Data.Settings不是数据

+0

这不是唯一的途径 – Coding4Fun

+0

当然还有很多实现一切的方法,但这是当前示例中代码更少的方式 – Boo