我得了BindableProperty分,我要考do some stuff when the value changed分. 到目前为止,我得到了这样的结论:

public static readonly BindableProperty IsActiveLinkProperty =
    BindableProperty.Create(nameof(IsActiveLink), typeof(bool), typeof(LinkStackLayout), false);

public bool IsActiveLink
{
    get => (bool)GetValue(IsActiveLinkProperty);
    set => SetValue(IsActiveLinkProperty, value);
}

我读到过关于使用BindingPropertyChangedDelegatenotify changes of my property IsActiveLink的文章,我正在try 实现它.我不能把它写对,我不知道如何写它,它是工作的.如果能得到帮助就太好了.

我最后一次try : (error在第一行,"意想不到的 token ")

BindableProperty.BindingPropertyChangedDelegate<bool>(BindableObject bindable, bool oldValue, bool newValue);

public static readonly BindableProperty IsActiveLinkProperty =
    BindableProperty.Create(nameof(IsActiveLink), typeof(bool), typeof(LinkStackLayout), false, BindingMode.TwoWay, propertyChanged: (b, o, n) =>
    {
        var lsl = (LinkStackLayout)b;
        lsl.DoStuff(n);
    });

public bool IsActiveLink
{
    get => (bool)GetValue(IsActiveLinkProperty);
    set => SetValue(IsActiveLinkProperty, value);
}

public void DoStuff()
{
    var icon = IsActiveLink ? CursorIconEnum.Hand : CursorIconEnum.Arrow;
    this.SetCustomCursor(icon, Handler?.MauiContext);
}

推荐答案

根据您的代码,我会这样做(未经过测试,但我假设您更了解您想要它做什么):

public static readonly BindableProperty IsActiveLinkProperty =
BindableProperty.Create(nameof(IsActiveLink), typeof(bool), typeof(LinkStackLayout), false, propertyChanged: DoStuff);

private static void DoStuff(BindableObject bindable, object oldValue, object newValue)
{
    var linkStackLayout = (LinkStackLayout)bindable;
    var icon = (bool) newValue ? CursorIconEnum.Hand : CursorIconEnum.Arrow;
    linkStackLayout.SetCustomCursor(icon, linkStackLayout.Handler?.MauiContext);
}

public bool IsActiveLink
{
    get => (bool)GetValue(IsActiveLinkProperty);
    set => SetValue(IsActiveLinkProperty, value);
}

Csharp相关问答推荐

是否可以将gltf转换为字节数组,然后将字节数组转换回文件?

Blazor:类型或命名空间名称Components在命名空间中不存在''

EF Core判断是否应用了AsSplitQuery()

如何注册实现同一接口的多个服务并注入到控制器构造函数中

C#EF Core 8.0表现与预期不符

如何将ASP.NET Core 2.1(在.NET框架上运行)更新到较新的版本?

注册所有IMediatR类

如何解决提交按钮后 Select 选项错误空参照异常

CS1660无法将lambda表达式转换为类型INavigationBase,因为它不是委托类型

将字节转换为 struct 并返回

DbContext-传递自定义配置选项

如何在用户在线时限制令牌生成?

如何在我的C#应用程序中设置带有reactjs前端的SignalR服务器?

Postgres ENUM类型在第一次运行时对Dapper不可见

如何从非异步任务中正确返回TypeResult

岛屿和框架中的自定义控件库.Navigate-AccessViolationException

ASP.NET MVC数据批注验证组复选框

在构造函数中传递C#函数以用作EventHandler委托的订阅服务器

C#定时器回调对象上下文?

SqlException:无法打开数据库.升级到Dotnet 8后-数据库兼容性版本-非EFCore兼容性级别