在哪里取消订阅 Xamarin.Forms 条目中的事件?

Where to unsubscribe events in a Xamarin.Forms Entry?

我有一个自定义条目继承自 Xamarin.Forms 条目以添加 CompletedCommand 属性。为此,我在构造函数中订阅了 Xamarin.Forms 条目的已完成事件,并调用了可绑定的 属性 命令。

我的问题是,是否有必要退订?如果是这样,哪里是这样做的好地方?

public class Entry : Xamarin.Forms.Entry
{
    public static readonly BindableProperty CompletedCommandProperty = BindableProperty.Create(
                                                     propertyName: nameof(CompletedCommand),
                                                     returnType: typeof(ICommand),
                                                     declaringType: typeof(Entry),
                                                     defaultValue: null,
                                                     defaultBindingMode: BindingMode.TwoWay);

    /// <summary>
    /// The Command to execute when this entry is completed (Enter pressed).
    /// </summary>
    public ICommand CompletedCommand
    {
        get => (ICommand)GetValue(CompletedCommandProperty);
        set => SetValue(CompletedCommandProperty, value);
    }

    public Entry() : base()
    {
        Completed += Entry_Completed;
    }

    private void Entry_Completed(object sender, EventArgs e)
    {
        CompletedCommand?.Execute(CompletedCommandParameter);
    }
}

谷歌搜索“xamarin 取消订阅事件”给出了很多有趣的结果。我觉得,如果可能的话,您想使用 EventToCommandBehavior(我相信是 xamarin 工具包的一部分?)来避免使用事件。但如果您做不到,取消订阅可能是不必要的,但仍然是最佳做法。

来源:https://github.com/xamarin/xamarin-forms-samples/issues/188