2016-04-14 1 views
1

ab. Ich verwende Xamarin Forms BoxView-Steuerelement und möchte die Kanten in Windows Phone 8.1 abrunden (kein Silverlight). Dafür rendere ich das Steuerelement in meinem Windows Phone Projekt und setze den Radius aber es scheint nichts zu tun. Unten ist der Code rendert Ich verwende:So runden Sie Rechteckkanten für ein Windows 8.1 (kein Silverlight) -Telefon mit Xamarin-Formularen

[assembly: ExportRenderer(typeof(RoundedBox), typeof(RoundedBoxRenderer))] 

namespace MyProject.WinPhone.Renderer 
{ 
    public class RoundedBoxRenderer : BoxViewRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<BoxView> e) 
     { 
      base.OnElementChanged(e); 

      var boxRenderer = e.NewElement; 
      RoundedBox rb = (RoundedBox)this.Element; 

      if (this.Control != null) 
      { 
       var boxStyle = new Style(typeof(RoundedBox)) 
       { 
        Setters = { 
         new Setter {Property = RoundedBox.BackgroundColorProperty, Value = rb.BackgroundColor} 
        } 
       }; 

       SetRoundedBoxRadius(); 

       boxRenderer.Style = boxStyle; 
      } 
     } 

     private void SetRoundedBoxRadius(double radius) 
     { 
      ((Windows.UI.Xaml.Shapes.Rectangle)this.Control).RadiusX = 50; 
     } 
    } 
} 

RoundedBox ist die Steuerung ich in meinem PCL-Projekt erzeugt, die von BoxView erbt

Aus meinen Erkenntnissen sehe ich nicht, was im falsch zu machen da Xamarin wandelt die BoxView in eine Vierecksform in Windows-Telefone nach:

https://developer.xamarin.com/guides/xamarin-forms/custom-renderer/renderers/

Und das shap e hat die Eigenschaft RadiusX und RadiusY die Grenzen Radius festlegen:

https://msdn.microsoft.com/library/windows/apps/br243371

Irgendwelche Ideen, was ich bin fehlt? Vielen Dank!

+0

Ich bin mit dem gleichen Problem konfrontiert :( – seba47

+0

In Windows verwenden Sie die 'CornerRadius' Eigenschaft abgerundete Ecken machen das Problem mit einem Rechteck ist.' CornerRadius' nicht zugänglich ist, so dass ich glaube nicht, von "BoxViewRenderer" zu vererben ist nicht die beste Idee. Ich sehe, dass 'Frame' 'Border' in Windows implementiert, die' CornerRadius' freigibt, die funktionieren könnte. – Barnstokkr

Antwort

0

Haben Sie versucht, den Strich (Farbe) und StrockThickness Ihres Rechtecks ​​zu setzen? Gemäß Ihrem Code sind diese nicht festgelegt. Daher hat Ihr Rechteck in der Tat keine Grenze.

+0

Entschuldigung für die späte Antwort. Ich habe versucht, einen Strich hinzuzufügen, nachdem ich Ihre gesehen habe Antwort, aber die Kanten sind immer noch nicht abgerundet –

0

Hallo Just aktualisieren Sie Ihre SetRoundedBoxRadius Funktion wie unten erwähnt. Dein Code wird funktionieren.

private void SetRoundedBoxRadius() 
     { 
      ((Windows.UI.Xaml.Shapes.Rectangle)this.Control).RadiusX = 50; 
      ((Windows.UI.Xaml.Shapes.Rectangle)this.Control).RadiusY = 50; 
     } 
+0

Sieht so aus, als wäre dies Ihre erste Antwort, danke! Können Sie bitte eine Text Erklärung zu Ihrer Antwort hinzufügen? Generell bevorzugen wir nicht nur Code, sondern Erklärungen zu diesem Code auf StackOverflow. – jakerella

Verwandte Themen