将WPF DataGrid与Reactivui一起使用

时间:2019-06-19 08:33:33

标签: c# wpf datagrid reactiveui

我正在尝试将WPF DataGrid绑定到ReactiveList。不幸的是,绑定不显示任何行。

我也尝试使用普通列表作为数据源。 我还尝试了AutoGenerateColumn函数,并使用Binding到AuswertungsEntry的属性(仅getters,没有setters)。 但是这些属性从未在运行时访问过。

我的view.xaml:

...

<DataGrid x:Name="AuswertungGrid" Grid.Row="1">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Fehler" Binding="{Binding Name}"></DataGridTextColumn>
        <DataGridTextColumn Header=" 1. Auswertung" Binding="{Binding ok1}"></DataGridTextColumn>
        <DataGridTextColumn Header=" 1. Auswahl"></DataGridTextColumn>
        <DataGridTextColumn Header=" 2. Auswertung"></DataGridTextColumn>
        <DataGridTextColumn Header=" 2. Auswahlt"></DataGridTextColumn>
        <DataGridTextColumn Header=" Gesamt"></DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

我在view.xaml.cs中的绑定:

this.WhenActivated((d) =>
{                
    this.OneWayBind(ViewModel,
         viewModel => viewModel.Entries,
         view => view.AuswertungGrid.ItemsSource)
         .DisposeWith(d);
}

我的ViewModel:

...
 private readonly ObservableAsPropertyHelper<ReactiveList<AuswertungsEntry>> _Entries;
 public ReactiveList<AuswertungsEntry> Entries => _Entries.Value;

 public AuswertungViewModel()
 {
    _Entries = this.WhenAnyValue(x => x.Data)
                   .Where(x => x != null)
                   .SelectMany(x => CreateDataSource())
                   .ToProperty(this, x => x.Entries);
 }

 public async Task<ReactiveList<AuswertungsEntry>> CreateDataSource()
 {
    return await AuswertungsService.GetAuswertung();
 }
...

服务正在返回正确的数据。我已经检查过了。但是没有生成行,既没有GenerateAutoColumn功能,也没有手动生成。

我希望DataGrid会被提供的数据填充。

1 个答案:

答案 0 :(得分:0)

ReactiveList<T>在ReactiveUI项目中已过时。

问题之一是它不会以WPF始终期望的方式产生INotifyCollectionChanged事件,尤其是在添加基于范围的值时。

如果需要对数据进行突变,我建议您使用SourceList<T>,否则,请使用ObservableCollection<T>