【问题标题】:UWP: Live queries and searches with realmUWP:使用领域进行实时查询和搜索
【发布时间】:2018-07-30 03:25:54
【问题描述】:

我使用 Realm 作为我的主数据库和同步引擎,我的问题是如何进行实时搜索查询?

例如当我使用时

var _age= 7;
Instance.All<Dog>().Where(d => d.Age == _age).AsRealmCollection();

并将我的列表视图绑定到它,当我更改_age 变量时,我需要更新我的视图。换句话说,我想对我的数据库进行“动态”查询。当我想寻找不同年龄的“狗”时,我希望我的观点得到更新。但是当我再次运行此查询并将新集合分配给 ViewModel 时,我的视图不会更新。

我该怎么办?

更新:

您可以在此处获取示例代码,以便重现此问题: https://github.com/Mohsens22/RelamTest

另外我必须告诉你IRealmCollection&lt;T&gt; 默认实现INotifyPropertyChanged,所以如果你用“写事务”将任何项目添加到集合中,视图将被更新。更多信息可以找到HERE

【问题讨论】:

  • 对于 ListView,ObservableCollection 可用于动态更新源,我无法使用此段代码重现您的问题,您能否分享一个可以重现此问题的简单示例?
  • @NicoZhu-MSFT 我添加了一个包含更多细节的示例代码。请看一下
  • 请尝试使用两路模型&lt;ListView x:Name="itemListView" ItemsSource="{x:Bind Dogz,Mode=TwoWay}"&gt;
  • 我试过了。没有结果。
  • 在添加 Mode=TwoWay 之前,Change 看起来不起作用。添加Mode=TwoWay后,按钮在我身边有效。

标签: c# uwp realm


【解决方案1】:

我检查了您的代码示例,发现Dogz 将使用Instance.All&lt;Dog&gt;().Where(z =&gt; z.Age == nxt).AsRealmCollection(); 重新创建。所以你需要两种方式绑定模型。

<ListView x:Name="itemListView" ItemsSource="{x:Bind Dogz,Mode=TwoWay}">

这是document 关于绑定的,您可以参考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多