0

我真的想不出这个问题的合乎逻辑的解决方案。我不能真正将值返回到前端,后端正在发生事情,我需要通知前端有关更改以便正确显示内容。

让我们来看看这个简单的后端类。

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 模式是否合法?我几乎可以肯定不是。

总结以防它仍然不清楚我想要什么 - 如基于计时器TextTestClass更改,前端也应显示此文本(CurrentText)。

4

0 回答 0