作者:wepiehr | 来源:互联网 | 2023-01-15 10:31
我有一个ListView
关于它的观点.现在,我切换到自定义渲染这个ListView
(并为自定义呈现ViewCell
BTW).如果我在模拟器(iOS,Android)中启动应用程序,我会收到以下异常:
Xamarin.Forms.Xaml.XamlParseException:位置12:13.无法分配属性"CachingStrategy":属性不存在,或者不可分配,或者值和属性之间的类型不匹配
如果我删除CachingStrategy
一切似乎工作正常.这是我的代码:
查看,ListView
放置在哪里:
CustomListView
namespace MyApp.CustomRenderers
{
public class CustomListView : ListView
{
}
}
CustomListViewRenderer
[assembly: ExportRenderer(typeof(MyApp.CustomRenderers.CustomListView), typeof(MyApp.iOS.CustomRenderers.CustomListViewRenderer))]
namespace MyApp.iOS.CustomRenderers
{
public class CustomListViewRenderer : ListViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (this.Control != null)
{
var listView = (UITableView)this.Control;
if (listView != null)
{
listView.SeparatorInset = UIEdgeInsets.Zero;
}
}
}
}
}
我应该复制属性还是需要不同的构造函数?
1> Sharada Guru..:
您收到此错误,因为CachingStrategy
它不是可绑定属性,而是由XAML解析器或构建任务提供的构造函数参数.
选项1
要解决此问题,您可以更改构造函数以接受CachingStrategy
:
public class CustomListView : ListView
{
public CustomListView(ListViewCachingStrategy cachingStrategy) :
base(cachingStrategy)
{
}
}
并且,更改您的XAML以将缓存策略指定为构造函数参数:
RecycleElement
OPTION-2
有一个hack可用,您可以在其中创建自己的参数属性.但它仅在XAML编译为ON时有效.更多细节在这里.