XAML プレビューアーでカスタム コントロールをレンダリングする

カスタム コントロールが XAML プレビューアーで期待どおりに動作しない場合があります。 この記事のガイダンスを参考にして、カスタム コントロールのプレビューの制限を確認してください。

警告

XAML プレビューアーは、Visual Studio 2019 バージョン 16.8 と Visual Studio for Mac バージョン 8.8 で非推奨となり、Visual Studio 2019 バージョン 16.9 と Visual Studio for Mac バージョン 8.9 で XAML ホット リロード機能に置き換えられました。 XAML ホット リロードの詳細については、こちらのドキュメントを参照してください。

基本プレビュー モード

プロジェクトをビルドしていない場合でも、XAML プレビューアーによってページがレンダリングされます。 ビルドするまで、コードビハインドに依存するコントロールはすべて、その基本の Xamarin.Forms 型が表示されます。 プロジェクトがビルドされると、XAML プレビューアーはデザイン時レンダリングを有効にしてカスタム コントロールを表示しようとします。 レンダリングが失敗した場合は、基本の Xamarin.Forms 型が表示されます。

カスタム コントロールのデザイン時レンダリングを有効にする

独自のカスタム コントロールを作成する場合、またはサード パーティ ライブラリのコントロールを使う場合、プレビューアーではそれらが正しく表示されない可能性があります。 コントロールを作成した場合でも、ライブラリからインポートした場合でも、プレビューアーで表示するには、カスタム コントロールをデザイン時のレンダリングにオプトインする必要があります。 作成したコントロールを使って、コントロールのクラスに [DesignTimeVisible(true)] を追加して、プレビューアーに表示します。

namespace MyProject
{
  [DesignTimeVisible(true)]
  public class MyControl : BaseControl
  {
    // Your control's code here
  }

}

たとえば、James Montemagno の ImageCirclePlugin の基底クラスを使います。

SkiaSharp コントロール

現在、SkiaSharp コントロールは、iOS でプレビューする場合にのみサポートされています。 Android プレビューではレンダリングされません。

トラブルシューティング

Xamarin.Forms のバージョンを確認する

少なくとも Xamarin.Forms 3.6 がインストールされていることを確認します。 NuGet で Xamarin.Forms バージョンを更新できます。

[DesignTimeVisible(true)] の場合でも、カスタム コントロールが適切にレンダリングされません。

コードビハインドまたはバックエンド データに大きく依存するカスタム コントロールは、XAML プレビューアーで常に機能するとは限りません。 次を行うことができます。

XAML プレビューアーに "カスタム コントロールが正しくレンダリングされていません" というエラーが表示される

プロジェクトをクリーンしてリビルドするか、XAML ファイルを閉じて再度開いてみてください。