Мне интересно, как я мог бы по-прежнему вызывать ReactiveUI WhenAnyValue со свойством, которое могло быть изменено вне установщика свойства в классе.Пожалуйста, извините, пример только что попытался сделать что-то быстрое, чтобы понять суть.Допустим, у меня есть два класса, один из которых человек, а другой - адрес.
public class Address : ReactiveObject
{
[Reactive]
public string Street1 { get; set; }
[Reactive]
public string Street2 { get; set; }
[Reactive]
public string State { get; set; }
[Reactive]
public string City { get; set; }
[Reactive]
public string ZipCode { get; set; }
}
public class Person : ReactiveObject
{
[Reactive]
public string Name { get; set; }
[Reactive]
public Address Address { get; set; }
public Person(Address address)
{
Address = address;
address.Changed .Subscribe(_ =>
{
//Tried this way
this.RaisePropertyChanged(_.PropertyName);
//Also tried this way
this.RaisePropertyChanged(nameof(Address));
});
this.Changed.Subscribe(_ =>
{
Console.WriteLine($"Person Property: {_.PropertyName} changed");
});
this.WhenAnyValue(_ => _.Name, _ => _.Address, (a, b) => "Emit").Subscribe(Console.WriteLine);
}
}
private static void Main(string[] args)
{
var address = new Address
{
Street1 = "Street1",
Street2 = "Street2",
City = "City",
State = "LA",
ZipCode = "11111"
};
var person = new Person(address);
person.Name = "Name";
Task.Delay(3000).Wait();
address.City = "CityChanged";
Console.ReadLine();
}
Я бы подумал, что мне нужно будет только подписаться на наблюдаемый адрес, измененный, а затем изнутри Person RaisePropertyChanged для свойства адреса.Он излучает в Измененную Наблюдаемую Личность и ведет себя так, как я и ожидал, но в этом сценарии никогда не генерируется Наблюдаемая Когда-Личность в Персоне.