2015-05-30 66 views
0

我有一個演示文稿類包含一個其他類的列表。如何顯示WPF DataGrid中的List類的內容?WPF Databind一個列表類

namespace AktieAnalyse.TekniskAnalyse.RSI 
{ 
    public class RSI 
    { 
    public decimal xAntalDageRsi { get; set; } 
    public decimal NiDagesRsi { get; set; } 
    public decimal FjortenDagesRsi { get; set; } 
    public decimal NiogfyrreDagesRsi { get; set; } 
    public decimal EthundreogHalvtressDagesRsi { get; set; } 
    } 
} 

namespace AktieAnalyseWPFUserControls.View.Presentation 
{ 
    public class RSI 
    { 
    public int IdVirksomhedensStamdata { get; set; } 
    public string VirksomhedensNavn { get; set; } 

    public List<AktieAnalyse.TekniskAnalyse.RSI.RSI> RsiListe { get; set; } 
    } 
} 

在WPF的 'VirksomhedsNavn' 工作是正確的,但不能 'RsiListe.NiDagesRsi':

<DataGrid x:Name="dataGrid_Rsi" ItemsSource="{Binding}" > 
    <DataGrid.Columns> 
    <DataGridTextColumn Header="Virksomhedsnavn" Binding="{Binding Path=VirksomhedensNavn}" /> 
    <DataGridTextColumn Header="RSI 9" Binding="{Binding Path=RsiListe.NiDagesRsi}"> 

如果我嘗試這樣做:

<DataGridTextColumn Header="RSI 9" Binding="{Binding Path=RsiListe[0].NiDagesRsi}"> 

它的工作原理(當然只在第一行)。我怎樣才能讓它在所有的行上工作?

回答

0

建議將列表綁定到ObservableCollection<T>而不是列表。

這實現了內部的INotifyPropertyChanged,所以當你設置列表的內容時,它會更新GUI。

1

看來你的viewmodel是RSI類的類?嘗試下面。

<DataGrid x:Name="dataGrid_Rsi" ItemsSource="{Binding RsiListe}" > 
    <DataGrid.Columns> 
    <DataGridTextColumn Header="RSI 9" Binding="{Binding Path=NiDagesRsi}"> 

也可以解釋爲什麼要綁定到viewmodel和列表中的datagrid?也可能是一個好主意,不要有兩個名爲RSI的類,如果它的首字母縮寫可能是寫出詳細模式的好主意。