使用 8.2.2 MVVM CommunityToolkit 从侧线程更新 UI

问题描述 投票:0回答:1

当我修改变量时,UI 不会更新。更新变量的函数是由另一个线程中触发的事件触发的。

我尝试使用调度程序返回主线程,但它不起作用...自上一个版本以来,该产品在 8.2.2 中使用带有属性的变量。你能告诉我如何继续这个版本吗?泰;)

[ObservableProperty]
private SolidColorBrush ellipseFill  

private void changeColor(object? sender, FaultStateChangedEventArgs e)
{
    if (Application.Current == null) { return; }
    Application.Current.Dispatcher.BeginInvoke(new Action(() =>
    {
    ellipseFill  = e.NewFaultState ? new SolidColorBrush(Colors.Green) : new SolidColorBrush(Colors.Gray);
    Debug.WriteLine(e.NewFaultState ? "true" : "false");
}), DispatcherPriority.Normal);

}

我尝试了标准版本,但没有将 ObservableObject 添加到我的类中。我正在手动实现 INotifyPropertyChanged 或返回到 MVVM CommunityToolkit 的 8.2.0 版本,代码是相同的,只是我以旧方式声明变量并且它可以工作...

老方法:

private string quantity = "";
        public string Quantity
        {
            get => quantity;
            set => SetProperty(ref quantity, value);
        }
c# multithreading binding inotifypropertychanged community-toolkit-mvvm
1个回答
0
投票

不要更新字段

ellipseFill
,而是更新由
CommunityToolkit.Mvvm
生成的属性 EllipseFill

© www.soinside.com 2019 - 2024. All rights reserved.