在 MAUI 中,Xamarin Forms 项目的可绑定属性不起作用
在 MAUI 中,可绑定属性的实现方式已经发生了改变,需要使用新的方式来实现。具体解决方法为:
在创建 MAUI 应用程序之前,需要先将 Xamarin Forms 应用程序迁移到 .NET 6,并将解决方案更新为支持 MAUI。
在 MAUI 项目中,可以通过为类添加 [Microsoft.Maui.Controls.BindableProperty] 特性来定义可绑定属性。例如,以下代码定义了一个名为 TextColor 的可绑定属性:
[Microsoft.Maui.Controls.BindableProperty("TextColor", typeof(Color), typeof(MyView), null)] public static readonly Microsoft.Maui.Controls.BindableProperty TextColorProperty = Microsoft.Maui.Controls.BindableProperty.Create(nameof(TextColor), typeof(Color), typeof(MyView), null);
可以通过在属性的 get 和 set 访问器中调用 GetValue 和 SetValue 方法来实现属性的 get 和 set 操作。例如,以下代码实现了 TextColor 属性的 get 和 set 访问器:
public Color TextColor { get { return (Color)GetValue(TextColorProperty); } set { SetValue(TextColorProperty, value); } }
在 XAML 中使用可绑定属性时,需要在元素的属性列表中添加对应的属性名和绑定的属性名称,例如:
完整示例代码:https://github.com/dotnet/maui-samples/blob/main/HelloMaui/HelloMaui/MyView.cs