我有一个原生(Xamarin.Forms)列表视图。我的数据上下文有3个属性,如:
public class MyDataContext :
{
public string Name {get;set;}
public string ImageName {get;set;}
public bool isAvailable {get;set;}
}
其中 名称 是 textLabel 的属性, ImageName ImageControl的imagesource和 isAvailable 某种细胞条件(真实 - 细胞是活跃的,其他明智的细胞有另一种不透明度/背景而不是可点击,也会出现一个图像(右上角),显示图像“ 已锁定 ”!)。
我目前的列表视图:
public class MyListView: ListView
{
public MyListView()
{
ItemTemplate = new DataTemplate(()=>
{
BackgroundColor = Color.FromHex("#f2f0e9");
var _Label = new Label() { FontSize = 13, TextColor = Color.FromHex("#979797")};
_Label.SetBinding(Label.TextProperty,"Name");
RowHeight = 69;
var _Img = new Image(){ WidthRequest = 35, HeightRequest = 42};
_Img.SetBinding(Image.SourceProperty,"ImageName");
return new ViewCell
{
View = new StackLayout
{
Orientation = StackOrientation.Horizontal,
Padding = 10,
Children =
{
_Img,
new StackLayout
{
Padding = 10,
VerticalOptions = LayoutOptions.Center,
Spacing = 0,
Children =
{
_Label,
}
}
}
}
};
});
}
}
}
出于某种原因,我需要自定义(两个平台iOs / Android):
我如何实现这一点?
任何帮助将不胜感激,谢谢!
PS对不起我的工程师。技能!
答案 0 :(得分:0)
我认为你不得不为此编写一个自定义渲染器。为了将分隔线设置为屏幕的整个宽度,您需要将分隔符插入设置为零,如下所示。
[assembly: ExportRenderer(typeof(ListView), typeof(MyListViewRenderer))]
namespace myApp.iOS.Custom_Renderers
{
public class MyListViewRenderer : ListViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
var table = (UITableView)this.Control;
table.SeperatorInset = UIEdgeInsets.Zero;
}
}
}
如果上面的任何一种语法不正确,我会在内存中写道,但它应该让你在正确的路径上停下来。