2016-03-14 76 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