Я создаю приложение для Android и iOS, используя Xamarin Forms.
Что я просто пытаюсь сделать, так это установить фон, который можно рисовать в моем приложении 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
похоже не дает мне доступа к нативному элементу.
Итак, есть ли способ получить доступ к собственным элементам элементов макета? Или, может быть, есть другой способ просто установить фон, который можно рисовать на макетах в моем приложении для Android?