当我需要“刷新”时,为我的ViewModel中的每个属性调用RaisePropertyChanged()是不好的做法吗?

本文关键字:RaisePropertyChanged 调用 属性 刷新 ViewModel 我的 | 更新日期: 2023-09-27 18:05:34

我目前使用反射来获取特定类型或访问级别的类中的所有属性名。然后,我通过RaisePropertyChanged()运行这些操作,实质上"更新"了整个视图。

我这样做的一个实例是在启动时,当程序启动时,当ViewModel被实例化时,它将运行此操作以确保视图显示来自模型的所有正确数据。

这样做有什么不对吗?

如果你想要代码:

    private void InitializeViewModel()
    {
        foreach (string name in MiscMethods.GetPropertyNames(this))
        {
            RaisePropertyChanged(name);
        }
    }
    public static IEnumerable<string> GetPropertyNames(Object yourClass)
    {
        foreach (PropertyInfo property in GetProperties(yourClass))
        {
            yield return property.Name;
        }
    }
    //Uses Reflection to return all properties in a class
    private static IEnumerable<PropertyInfo> GetProperties(Object theObject)
    {
        return theObject.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.FlattenHierarchy | System.Reflection.BindingFlags.Instance);
    }

当我需要“刷新”时,为我的ViewModel中的每个属性调用RaisePropertyChanged()是不好的做法吗?

使用空字符串触发事件

RaisePropertyChanged("");

这将触发所有属性的更新。

糟糕的想法。A)反射很慢,你甚至没有缓存的东西B)为什么你要更新50个属性时,你只更新1个?

相关文章:
  • 没有找到相关文章