我真的想不出这个问题的合乎逻辑的解决方案。我不能真正将值返回到前端,后端正在发生事情,我需要通知前端有关更改以便正确显示内容。
让我们来看看这个简单的后端类。
public class TestClass
{
public string Text {get;set;} = string.Empty;
private void SetTimer()
{
Text = "Starting count";
Timer timer = new Timer
{
Interval = 10000
};
timer.Enabled = true;
timer.Elapsed += OnTimerEvent;
}
private void OnTimerEvent(Object source, System.Timers.ElapsedEventArgs e)
{
Text = "Count finished";
}
}
我将跳过 AXAML,只显示视图模型。
public class NewWindowViewModel : ReactiveObject
{
private string currentText = string.Empty;
public string CurrentText
{
get => currentText;
set => this.RaiseAndSetIfChanged(ref currentText, value);
}
public TestClass TestClass { get; set; } = new TestClass();
}
定时器在这里启动。
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
_viewModel.TestClass.SetTimer();
}
代码隐藏中的东西工作正常,文本在 10 秒后发生变化,但显然前端对任何事情一无所知。
将逻辑移动到视图模型可能会解决问题,但根据 MVVM 模式是否合法?我几乎可以肯定不是。
总结以防它仍然不清楚我想要什么 - 如基于计时器Text
的TestClass
更改,前端也应显示此文本(CurrentText
)。