【发布时间】:2014-08-13 15:58:13
【问题描述】:
我正在使用 Xamarin Forms 构建 Android 和 iOS 应用程序。
我只是想在我的 Android 应用程序上为我的ListView 项目设置一个可绘制的背景。我的ListView 项目的根视图是StackLayout 的:
var listView = new ListView
{
ItemsSource = items,
ItemTemplate = new DataTemplate(() =>
{
return new ViewCell
{
View = new StackLayout(...)
};
}
};
我知道我可以使用自定义渲染器访问本机元素:
public class MyEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.OldElement == null) {
var nativeEditText = (EditText)Control;
...
}
}
}
但我不确定这对于StackLayout(或任何其他布局)如何工作。
我先扩展StackLayout:
public class ListViewItem : StackLayout
{
}
我在某处读到布局使用VisualElementRenderer,所以我尝试了以下方法:
public class ListViewItemRenderer : VisualElementRenderer<StackLayout>
{
protected override void OnElementChanged(ElementChangedEventArgs<StackLayout> e)
{
base.OnElementChanged(e);
// any way to access the native element?
}
}
但VisualElementRenderer 似乎无法让我访问本机元素。
那么有什么方法可以访问 Layout 元素的原生元素吗?或者,也许有一种不同的方法可以在我的 Android 应用中的布局上简单地设置背景可绘制对象?
【问题讨论】:
标签: xamarin.ios xamarin xamarin.forms