lau*_*jpn 2 c# listview xamarin.forms
我在XAML文件中设置CachingStrategy
自己ListView
继承的子类的。
但是,由于CachingStrategy
拥有一个私有的setter,并且由于它是Parameter
在其构造函数之一中使用属性设置的,由于某种原因,该属性被声明为内部的且是密封的,因此似乎无法对a进行子类化ListView
。
生成以下编译器错误:
找不到“ CachingStrategy”的属性,可绑定属性或事件,或值和属性之间的类型不匹配。
这是故意的吗?该Parameter
属性为内部属性的原因是什么,更重要的是,是否存在一种将a子类化的干净方法ListView
?
作为一种解决方法,我最终做了以下工作:
public class MyListView : ListView
{
public new ListViewCachingStrategy CachingStrategy
{
get => base.CachingStrategy;
set => GetType().BaseType.GetProperty(nameof(CachingStrategy))
.SetValue(this, value);
}
}
Run Code Online (Sandbox Code Playgroud)
可以继承ListView并从XAML设置缓存策略,但这并不简单。文档在这里:
重要的是必须将缓存策略传递到构造函数中,这可能就是为什么无法使用属性进行设置的原因。
从Xamarin文档中复制了用于继承ListView并从XAML使用的相关代码段:
public class CustomListView : ListView
{
public CustomListView (ListViewCachingStrategy strategy) : base (strategy)
{
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后在您的XAML中使用它:
<local:CustomListView>
<x:Arguments>
<ListViewCachingStrategy>RecycleElement</ListViewCachingStrategy>
</x:Arguments>
</local:CustomListView>
Run Code Online (Sandbox Code Playgroud)
可悲的是,它没有使用基类时的优雅。
归档时间: |
|
查看次数: |
678 次 |
最近记录: |