Ответ 1
MasterDetailPage и другие общие элементы - это просто контейнеры для визуализации рендеринга. Лучше всего было бы создать пользовательский LRMasterDetailPage (слева направо) и дать ему свойства как для DetailLeft, так и для DetailRight. Затем вы создаете пользовательский ViewRenderer для платформы для этого настраиваемого элемента.
Элемент:
public class LRMasterDetailPage {
public View LeftDetail;
public View RightDetail;
public View Master;
}
Средство рендеринга:
[assembly:ExportRenderer (typeof(LRMasterDetailPage), typeof(LRMDPRenderer))]
namespace App.iOS.Renderers
{
public class LRMDPRenderer : ViewRenderer<LRMasterDetailPage,UIView>
{
LRMasterDetailPage element;
protected override void OnElementChanged (ElementChangedEventArgs<LRMasterDetailPage> e)
{
base.OnElementChanged (e);
element = e.NewElement;
// Do someting else, init for example
}
protected override void OnElementPropertyChanged (object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Renderer")
return;
base.OnElementPropertyChanged (sender, e);
if (e.PropertyName == "LeftDetail")
updateLeft();
if (e.PropertyName == "RightDetail")
updateRight();
}
private void updateLeft(){
// Insert view of DetailLeft element into subview
// Add button to open Detail to parent navbar, if not yet there
// Add gesture recognizer for left swipe
}
private void updateRight(){
// same as for left, but flipped
}
}
}