

Xamarin Studio 5.6.3 build 3のSketches機能を使っています。
Xamarin.Formsモードでの利用時にXAMLファイルをプレビューできると良いのですが、残念ながらこのような機能は提供されていないようです。

良い方法はありませんか?


CC BY-SA 3.0
2014-12-05T09:13:20.580
369
2014-12-05T09:13:20.580
777
question
xamarin
Xamarin SketchesでXamarin.FormsのXAMLをプレビューする方法


Xamarin.Forms内のメソッドが提供するXAMLローダをリフレクションによって利用することで実現できます。
以下のコードをSketchesのテキストエリアへ貼り付けてください。

[code]

    using Xamarin.Forms;
    using System.Reflection;
    using System.Runtime.CompilerServices;
    using Xamarin.Forms.Xaml;
    
    var 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"" x:Class=""XamlSamples.HelloXamlPage""
                 Title=""Hello XAML Page""
                 Padding=""10, 40, 10, 10"">
    
      <Label Text=""Hello, XAML Sketch!!""
             VerticalOptions=""Start""
             XAlign=""Center""
             Rotation=""15""
             IsVisible=""true""
             Font=""Bold, 80""
             TextColor=""Red"" />
    
    </ContentPage>";
    
    var page = new ContentPage{Padding = new Thickness(0,20,0,0)};
    var s = (((MethodInfo)(((TypeInfo)((Assembly.Load(new AssemblyName("Xamarin.Forms.Xaml, Version=1.2.3.0, Culture=neutral, PublicKeyToken=null"))
        .GetTypes().Where(t => t.FullName == "Xamarin.Forms.Xaml.Extensions").First()))).DeclaredMembers
        .Where(t => !((MethodInfo)t).Attributes.HasFlag(System.Reflection.MethodAttributes.Family)).First())).MakeGenericMethod(typeof(ContentPage))).Invoke(null, new object[]{page, xaml}) != null;
    RootPage.Children.Add(page);
    
[/code]

これを貼り付けると、Xamarin Android PlayerまたはiOS SimulatorでXAMLの解釈されたビューを表示できます。

その後は、XAML部分を編集した結果が即時更新されていきます。

ここでのXAML記述について、`"`を`""`と表記する必要があることに注意してください。

なお、動作の仕組みは[第五次Xamarin.Forms戦争の記録(XAMLのライブプレビュー編)
](http://www.muo.jp/2014/12/xamarinformsxaml.html)で紹介されています。


CC BY-SA 3.0
2014-12-05T09:13:20.580
370
2014-12-05T09:13:20.580
777
369
answer