WPF Databind一个带List的类

时间:2015-05-30 19:39:31

标签: c# wpf

我有一个表示类,包含其他类的List。如何在WPF DataGrid中显示List类的内容?

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}">

它有效(当然只在第一行)。如何让它在所有行上运行?

2 个答案:

答案 0 :(得分:1)

您的viewmodel似乎是RSI类型的类?试试以下。

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

您还可以解释为什么要从viewmodel和列表绑定到datagrid吗?也可能是一个好主意,没有两个名为RSI的类,如果它的首字母缩写可能是一个好主意,可以写出详细模式。

答案 1 :(得分:0)

建议将列表绑定到ObservableCollection<T>而不是列表。

这在内部实现INotifyPropertyChanged,因此当您设置列表的内容时,它将更新GUI。