我试图创建一个名为SelectedTreeViewItem的属性,但收到以下错误:

错误CS1615参数%1不能与‘ref’关键字一起传递

注:BindableBase是从DevExpress.Mvvm开始的a级,

This is the signature of the 100 method:

protected bool SetProperty<T>(ref T storage, T value, Expression<Func<T>> expression, Action changedCallback)
{
    return SetProperty(ref storage, value, GetPropertyName(expression), changedCallback);
}

如何修复此错误?

public class MainViewModel : BindableBase
    {
        private string _selectedTreeViewItem = null;
        public string SelectedTreeViewItem
        {
            get { return _selectedTreeViewItem; }
            set { SetProperty(ref _selectedTreeViewItem, value); }
        }
    }

推荐答案

从DevExpress文档BindableBase:

Using Properties With Backing Fields

当属性频繁更新时(由于从lambda表达式计算(computed)属性名称并将属性值存储在字典中),应用程序性能可能会降低.要适应这些情况,请使用属性的存储变量,并使用BindableBase.GetPropertyName方法从静态构造函数计算一次属性名称.

public class ViewModel : BindableBase
{
    static string Property1Name;
    static ViewModel() {
        Property1Name = BindableBase.GetPropertyName(() => new ViewModel().Property1);
    }

    string property1;
    public string Property1 {
        get { return property1; }
        set { SetProperty(ref property1, value, Property1Name); }
    }
}

您需要在第三个参数中传递属性名称,如下所示:

public class MainViewModel : BindableBase
{
    private string _selectedTreeViewItem = null;
    public string SelectedTreeViewItem
    {
        get { return _selectedTreeViewItem; }
        set { SetProperty(ref _selectedTreeViewItem, value, nameof(SelectedTreeViewItem)); }
    }
}

Csharp相关问答推荐

我们应该如何在IHostedService中使用按请求的GbContent实例?

将实例绑定方法传递到列表foreach

C#将参数传递给具有变化引用的变量

Microsoft. SQLServer. Types(106.1000.6)在try 从用户定义的类型检索值时引发异常

通过EFCore上传大量数据.

数组被内部函数租用时,如何将数组返回给ArrayPool?

如何在Visual Studio代码中更改大括号模式{},用于C#语言

如何在不考虑年份的情况下判断日期时间是否在某个日期范围内?

如何忽略API JSON响应中的空字符串?

在允许溢出的情况下将小数转换为长

.NET SDK包中的官方C#编译器在哪里?

为什么C#认为这个非托管 struct 有一个重叠

反序列化私有成员

net中从位图获取坐标和绘制折线

关于扩展文件类C#的矛盾

RabbitMQ群集的MassTransit配置问题

我找不到ASP.NET Web应用程序(.NET框架).已 Select .NET框架项目和项模板以及此组件(&Q;)

在';、';附近有错误的语法.必须声明标量变量";@Checkin";.';

EF Core 7-忽略模型绑定中的虚拟属性

NETSDK1201:对于面向.NET 8.0和更高版本的项目,默认情况下,指定RUNTIME标识符将不再生成自包含的应用程序