Я новичок в ReactiveUI, и я пытаюсь создать простой реактивный объект с реактивными свойствами. Я не получаю уведомление, когда свойство установлено. Это мой код:Простое свойство объекта ReactiveUI не срабатывает
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ReactiveUI;
using System.Windows.Media.Media3D;
namespace SUReactiveUITest
{
public class MyRepository : ReactiveObject
{
Point3D _SyncPoint;
public Point3D SyncPoint
{
get { return _SyncPoint; }
set
{
_SyncPoint = value;
this.RaiseAndSetIfChanged(ref _SyncPoint, value);
}
}
}
class Program
{
static void Main(string[] args)
{
Program program = new Program();
}
MyRepository repo = new MyRepository();
Program()
{
repo.WhenAnyValue(x => x.SyncPoint).Subscribe(OnNewSyncPoint);
repo.SyncPoint = new Point3D(1, 2, 3);
repo.SyncPoint = new Point3D(10, 20, 30);
}
void OnNewSyncPoint(Point3D p)
{
System.Console.WriteLine("My point NEW value: {0}", p);
}
}
}
Я ожидал, что OnNewSyncPoint()
будет называться, и вывод должен быть:
Моя точка Новое значение: 1,2,3
Моя точка Новое значение: 10,20,30
Но ничего не печатается :(
избавиться от _SyncPoint = значение; который устанавливает значение до того, как RaiseAndSetIfChanged выполнит реальную работу и, таким образом, не изменится или не изменит наблюдаемое значение. – kenny