[英]How can I select an item in a ListView in Xamarin.Forms with XAML
[英]How to subclass a ListView with XAML set CachingStrategy in Xamarin.Forms
我在XAML文件中设置了我自己的ListView
继承子类的CachingStrategy
。
但是因为CachingStrategy
有一个私有的setter,并且因为它是在其中一个构造函数中使用Parameter
属性设置的,由于某种原因它被声明为内部和密封,似乎没有办法子类化ListView
。
生成以下编译器错误:
没有找到“CachingStrategy”的属性,可绑定属性或事件,或者值和属性之间的类型不匹配。
这是故意的吗? Parameter
属性是内部的原因是什么,更重要的是,是否有一种简洁的方法来继承ListView
?
作为一种解决方法,我最终做了以下工作:
public class MyListView : ListView
{
public new ListViewCachingStrategy CachingStrategy
{
get => base.CachingStrategy;
set => GetType().BaseType.GetProperty(nameof(CachingStrategy))
.SetValue(this, value);
}
}
可以将ListView子类化并从XAML设置缓存策略,但这并不简单。 文档在这里:
重要的是缓存策略必须传递给构造函数,这可能是为什么没有办法使用属性设置它。
ListView的子类和从XAML使用的相关代码片段是从Xamarin文档中复制的:
public class CustomListView : ListView
{
public CustomListView (ListViewCachingStrategy strategy) : base (strategy)
{
}
...
}
然后在你的XAML中消费它:
<local:CustomListView>
<x:Arguments>
<ListViewCachingStrategy>RecycleElement</ListViewCachingStrategy>
</x:Arguments>
</local:CustomListView>
遗憾的是,它并不像使用基类那样优雅。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.