在哪里取消订阅 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
我有一个自定义条目继承自 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