gpt4 book ai didi

c# - 现在我不再需要显式订阅 property-changed-event,我可以简化这个 iOS 渲染器吗

转载 作者:太空狗 更新时间:2023-10-29 23:36:22 24 4
gpt4 key购买 nike

我正在使用这个自定义渲染器:

public class ExtViewCellRenderer : ViewCellRenderer
{
UITableViewCell _nativeCell;

public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
_nativeCell = base.GetCell(item, reusableCell, tv);
var formsCell = item as ExtViewCell;

if (formsCell != null)
{
formsCell.PropertyChanged -= OnPropertyChanged;
formsCell.PropertyChanged += OnPropertyChanged;
}
SetTap(formsCell);

return _nativeCell;
}

void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
{
var formsCell = sender as ExtViewCell;
if (formsCell == null)
return;

if (e.PropertyName == ExtViewCell.NoTapProperty.PropertyName)
{
SetTap(formsCell);
}
}

private void SetTap(ExtViewCell formsCell)
{
if (formsCell.NoTap)
_nativeCell.SelectionStyle = UITableViewCellSelectionStyle.None;
else
_nativeCell.SelectionStyle = UITableViewCellSelectionStyle.Default;
}

}

我读到,使用 TextCellRenderer 不再需要显式订阅 property-changed-event,因为有一个可重写的基本方法 HandlePropertyChanged 可以重复使用在这种情况下。

有人可以告诉我 ViewCellRenderer 是否也是这种情况吗?如果是这样,我该如何修改此代码以利用它?

我也在另一个渲染器中看到这样的代码:

public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
var textCell = (TextCell)item;
var fullName = item.GetType().FullName;
cell = tv.DequeueReusableCell(fullName) as CellTableViewCell;

//...

但这里没有。是否有必要这样做 Cell = tv.DequeueReusableCell

最佳答案

I read that with a TextCellRenderer it's no longer necessary to explicitly subscribe to property-changed-event as there is a base overridable method HandlePropertyChanged that can be re-used in this context.

是的,根据其源代码,这是正确的

protected virtual void HandlePropertyChanged(object sender, PropertyChangedEventArgs args) {
//...
}

TextCellRenderer Source

Can someone tell me if this is the case also for the ViewCellRenderer and if so then how could I modify this code to make use of this?

不,根据源代码,ViewCellRenderer 也并非如此 ViewCellRenderer未公开其 ViewCellPropertyChanged 因为它是 private

void ViewCellPropertyChanged(object sender, PropertyChangedEventArgs e) {
//...
}

ViewCellRenderer Source

您始终可以自己修改它并创建拉取请求以添加该功能。

关于c# - 现在我不再需要显式订阅 property-changed-event,我可以简化这个 iOS 渲染器吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47266212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com