我有一个显示待处理事务的DataGrid。当用户选择一个事务并对其进行处理时,该事务不应再显示在数据网格中。我一直在使用ObservableCollection来支持DataGrid,但由于我使用Realm存储数据,我想使用一个IRealmCollection并将其绑定到DataGrid,但是当我这样做时,我得到一个错误
An unhandled exception of type 'System.StackOverflowException' occurred in WindowsBase.dll
这是我第一次尝试使用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,并且在某处我可以看一下这个例子吗?