【发布时间】:2020-09-23 12:33:12
【问题描述】:
我有一个具有这两个属性(IntOption 和 Option)的 RealmObject:
public enum Option { A, B, C }
public class MyObject : RealmObject
{
[PrimaryKey]
public string Id { get; set; }
public int IntOption { get; set; }
public Option Option
{
get => (Option)IntOption;
set
{
IntOption = (int)value;
RaisePropertyChanged();
}
}
}
基本上,Realm 不允许您存储枚举属性,因此我同时拥有枚举属性和正在存储的实际 Int 值。到目前为止,一切顺利。
现在,奇怪的事情。如果我将这两个属性绑定到 XAML 文件中的标签,就像:
<Label Text="{Binding Option}" />
<Label Text="{Binding IntOption}" />
我在 C# 中为 Option 赋值:
myVariable.Option = Option.A;
绑定到 IntOption 属性的标签使用新值更新,但绑定到 Option 的标签不会。
经过多次调试,我认为这里的关键元素是绑定到XAML页面的元素,以及正在被代码修改的元素,是两个不同的变量/对象实例,但我不知道是什么领域这样做是为了让 IntOption 实际上更新所有绑定,但 RaisePropertyChanged(它本身就是一个应该这样做的领域方法)没有。
我应该怎么做才能让 Option 在属性更改时更新所有绑定,就像 IntOption 一样?
【问题讨论】:
-
嗨!你解释的那种行为很奇怪。尝试在
RaisePropertyChanged方法中显式发送属性的名称。类似:RaisePropertyChanged(nameof(Option));RaisePropertyChanged(nameof(IntOption));试试这个,让我们知道结果。 -
不幸的是,这是我尝试的第一件事,但没有任何区别:(
标签: c# xamarin xamarin.forms realm