将DataGrid绑定到IRealmCollection

时间:2018-03-02 16:01:58

标签: c# wpf realm wpfdatagrid

我有一个显示待处理事务的DataGrid。当用户选择一个事务并对其进行处理时,该事务不应再显示在数据网格中。我一直在使用ObservableCollection来支持DataGrid,但由于我使用Realm存储数据,我想使用一个IRealmCollection并将其绑定到DataGrid,但是当我这样做时,我得到一个错误

An unhandled exception of type 'System.StackOverflowException' occurred in WindowsBase.dll

enter image description here

这是我第一次尝试使用Realm通知,所以我可能做错了。这就是我的View Model的样子:

public ObservableCollection<SageTransaction> PendingTransactions { get; set; }
public IRealmCollection<SageTransaction> PendingTransactions2 { get; }

public TransactionsViewModel()
{
    var realm = Services.LocalRealmDB.InitializeRealm();            

    // Old Way that works
    PendingTransactions = new ObservableCollection<SageTransaction>( realm.All<SageTransaction>().Where( d => d.Posted == false ).ToList() );

    // New way that fails
    PendingTransactions2 = realm.All<SageTransaction>().Where( d => d.Posted == false ).AsRealmCollection();
}

然后我将它绑定到DataGrid,如下所示:

<DataGrid Grid.Row="0"                             
            x:Name="PendingTransactions"                              
            ItemsSource="{Binding PendingTransactions2}"
            SelectedItem="{Binding PendingDetails}"
            AutoGenerateColumns="False"
            CanUserResizeColumns="True" 
            CanUserDeleteRows="False"
            CanUserReorderColumns="True" Margin="10,10,10,0" >
    <DataGrid.Columns>
        ...
    </DataGrid.Columns>
</DataGrid>

集合填充,但在构造函数完成后直接抛出错误。领域Documentation表示你可以将IRealmCollection直接传递给视图,所以我不确定我做错了什么。

所以我的问题是,通过使用IRealmCollection,网格会在处理交易时自动更新吗?

我是否错误地使用了IRrealmCollection,并且在某处我可以看一下这个例子吗?

0 个答案:

没有答案