xamarin 如何在.Net MAUI处理程序上添加事件

jhiyze9q  于 2023-06-03  发布在  .NET
关注(0)|答案(1)|浏览(261)

我有一个Xamarin应用程序,现在正在将项目迁移到MAUI。有一个picker的渲染器,它包含OnElementPropertyChanged(object sender, PropertyChangedEventArgs e),并且在此事件中有一些操作。但是当我试图将其转换为MAUI处理程序时,找不到任何此事件。我如何在MAUI上实现这一点。
这是我的自定义选择器和渲染器,这个渲染器是用于绑定不同的值到选择器的文本属性和下拉列表,就像我想在选择器下拉列表中显示项目描述,当用户选择一个需要绑定项目名称的选择器文本。

public class CustomPicker : Picker
{ 
   public CustomPicker()
   {
   }  
      public static readonly BindableProperty DisplayItemTextProperty =BindableProperty.Create(nameof(DisplayItemText),typeof(string), typeof(CustomEntry), default(string), BindingMode.TwoWay);
      public string DisplayItemText
        {
           get { return (string)GetValue(DisplayItemTextProperty); }
           set => SetValue(DisplayItemTextProperty, value);
        }
   }

渲染器

public class CustomPickerRenderer : PickerRenderer
{  
 CustomPicker customPicker;
    public CustomPickerRenderer(Context context) : base(context)
    {
    }
    protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
     {
        base.OnElementChanged(e);
        if (e.OldElement == null)
          {
           customPicker = Element as CustomPicker;
          }
      }
  protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
     {
       base.OnElementPropertyChanged(sender, e);
       if (Control != null && customPicker != null && !string.IsNullOrEmpty(customPicker.DisplayItemText))
           {
             Control.Text = customPicker.DisplayItemText;
           }
       }
    }
1u4esq0p

1u4esq0p1#

有一个用于选择器的渲染器,它包含OnElementPropertyChanged(对象发送器,PropertyChangedEventArgs e),并且在此事件中有一些操作。但是当我试图将其转换为MAUI处理程序时,找不到任何此事件。我如何在MAUI上实现这一点。
MAUI已经在官方wiki中详细阐述了这个问题及其用例,请参阅Property Mappers了解更多详情。
PropertyMapper是Handlers引入的一个新概念。它是一个字典,将接口的属性Map到其关联的操作。它在我们的控件的接口中定义,它将在OnElementPropertyChanged中完成的所有操作替换为Xamarin.Forms

相关问题