2016-04-22 9 views
1

私はcontrols customizationsについて多くの投稿を読んでいます。私の質問はとてもシンプルです。チュートリアルのすべての記事では、PCLの共有プロジェクトでカスタムレンダラーを作成し、特定のレンダラーを使用するすべてのプラットフォームでそれを実装する方法について説明しています。xamarin PCLは共有カスタムコントロールを形成します

例:thisまたはthis投稿のxamarinガイドとxamarinブログ。

PCL共有プロジェクトで一度だけ実装する方法はありますか?

私の目標は、まったく新しいかもしれないカスタムコントロール、たとえばいくつかの四角形といくつかのラベルを含むコントロールを作成することです。あなたが想像することができる何か。私が達成できない唯一の機能は、共有プロジェクトの実装だけです。

おかげで、すべて、任意の返信が

+0

いいえ、できません。すべてのプラットフォームは、UIは非常に似通っていますが作成され提示される方法が異なります。 – nullpotent

+0

オハイオ州オクラホマ:(それはすばらしい機能でした。返信すると質問を閉じることができます。ありがとう! –

+1

私はあなたに誤解されている可能性があります。私はむしろ回答として投稿したいと思います。そうでなければ、ちょうど待つ;) – nullpotent

答えて

1

カスタムレンダラはプラットフォーム固有のものが理解されよう。彼らは、Xamarin.Forms要素をネイティブコントロールに変換する目的を持っています。

あなたのユースケースは複合コントロールのように聞こえます。できることは、利用可能なすべてのコントロールを再利用可能なコンポーネントにラップインすることです。

MyControl.xaml

<?xml version="1.0" encoding="utf-8" ?> 
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="App3.MyControl"> 
    <Label Text="Hello World" VerticalOptions="Center" HorizontalOptions="Center" /> 
    <BoxView BackgroundColor="Fuchsia"></BoxView> 
    <!-- add whatever you want --> 
</StackLayout> 

MyControl.xaml.csあなたのページにそれを使用することができるよりも

public partial class MyControl : StackLayout 
{ 
    public MyControl() 
    { 
     InitializeComponent(); 
    } 
} 

Page1.xaml

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:local="clr-namespace:App3;assembly=App3" 
      x:Class="App3.Page1"> 
    <local:MyControl></local:MyControl> 
</ContentPage> 
+0

申し訳ありませんが、あなたはApp3のwitnを意味しますか?あなたのプロジェクト名ですか?内部にカスタムレンダリングのサブフォルダがある場合、clr-namespaceを定義する方法は?ありがとう –

+0

App3がプロジェクト名でした。 –

1

プラットフォームによって提供されるネイティブウィジェットにアクセスできるように、異なるプラットフォーム用のカスタムレンダラーが必要です。

しかし、すべてのカスタムコントロールを描画する場合は、skiasharpクロスプラットフォームの図面ライブラリを使用して結果を得ることができます。詳細については、このブログ記事を参照してください。Cross-Platform 2D Graphics with SkiaSharp

関連する問題