birkaç iyi zaten bir "özel denetimi" nasıl oluşturulacağını örnekleri vardır - Görünüm bir sınıf türetmekXamarin.Forms XAML ve Özel Renderer kullanarak UserControl'ın
- veya yerleşik mevcut kontrol ve daha sonra Platform başına özel bir oluşturucu oluşturmak. Bir "bileşik özel bir denetim TD usercontrol" bir oluşturucuyla (ortak kod) XAML tanımlandığı gibidir ve daha sonra özel birden elemanları ihtiva oluşturmak isteyen http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/
Bunu yapmanın bir örneği var mı lütfen? İkili bir etikete ve bir giriş kutusuna sahip bir görünüm ile basit bir örnek, ana ilkeleri göstermek için yeterli olmalıdır.
bizim usercontrols düzen ve içeriğini temsil eden bir contentView Tanımlı - İşte Ben bugüne kadar ne olduğunu. codebehind ile<ContentView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="News.Forms.VisualNewsContentView">
<ContentView.Content>
<StackLayout>
<Label x:Name="MyLabel" Text="Label"></Label>
<Entry x:Name="MyEntry" Text="Entry"></Entry>
</StackLayout>
</ContentView.Content>
</ContentView>
-
public partial class VisualNewsContentView : ContentView
{
public VisualNewsContentView()
{
InitializeComponent();
}
// Not sure if I need this to access Entry ...
public Entry GetEntry()
{
return MyEntry;
}
}
o contentView için bir Android Custom Renderer ekle, nasıl contentView parçaları/erişimi kontrol eder ve doğal olarak özelleştirebilirim?
[assembly:ExportRenderer (typeof(VisualNewsContentView), typeof(VisualNewsRenderer))]
namespace News.Forms.Android
{
public class VisualNewsRenderer: ViewRenderer
{
public VisualNewsRenderer() { }
protected override void OnModelChanged (VisualElement oldModel, VisualElement newModel)
{
base.OnModelChanged (oldModel, newModel);
if (newModel != null) {
VisualNewsContentView newsContentView = newModel as VisualNewsContentView;
// i.e. How could I get hold of EditText etc so I could natively customise its appearance? When you use a built in renderer like EntryRenderer you can use Control to access native control.
Console.WriteLine (newsContentView.GetLabel().Text);
EditText ed = (EditText)newsContentView.GetEntry().???
}
}
}
}
Hemen oldukça işe parçaları bir araya alamayan, contentView Sayfada küçük hale görünüyor ama viewrenderer yılında Çocuk Yerli denetimlere erişmek için nasıl çalışamaz.
Etiket ve Giriş Metni değerleri için Bağlamayı nasıl kullanabileceğinizi göstermekten memnuniyet duyarız.
Kullanıcı denetiminin her bir etiket/giriş vb. Için özel oluşturucu tanımlamak istemiyorum.
Merhaba @Bart, yanıtınız için teşekkür ederim, açık olmasaydım üzgünüm, ancak temel Android Denetimi/Görünümü'ne (yani EditText) erişmem gerekiyor, bu yüzden doğrudan yapamayacağım yerel özelleştirme yapabilirim Form özellikleriyle. – WickedW
@WickedW Cevabımı düzenledim, ancak Formlar öğelerini yerel olanlarla eşleştirmenin mümkün olup olmadığını bilmiyorum. – Bart
Teşekkürler @Bart, tek bir kontrol/görüntüleme seviyesinde ya da tüm sayfayı/uicontroller'ı ele geçirir ve önerdiğiniz gibi bir VEYA "hibrid" yaklaşımı sağlayarak özelleştirebilirsiniz. Xamarin Forms ekibi ekibinden birinin, kişiselleştirilmesi için bir usercontrol üzerinde kontrolleri ele geçirmemize izin verebileceklerini/planlayabilecekleri konusunda yorum yapması ister miydi? – WickedW