{"id":6038,"date":"2014-07-17T12:50:50","date_gmt":"2014-07-17T03:50:50","guid":{"rendered":"http:\/\/www.moonmile.net\/blog\/?p=6038"},"modified":"2014-07-17T12:53:40","modified_gmt":"2014-07-17T03:53:40","slug":"nuget%e3%81%a7xamarin-forms-xamlprovilder%e3%82%92%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97%e3%81%9f","status":"publish","type":"post","link":"http:\/\/www.moonmile.net\/blog\/archives\/6038","title":{"rendered":"NuGet\u3067Xamarin.Forms.XamlProvilder\u3092\u516c\u958b\u3057\u307e\u3057\u305f"},"content":{"rendered":"<p>\n\u52d5\u7684\u306bXamarin.Forms\u306eXAML\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\u3059\u308b\u3068\u304d\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066\u4f7f\u3063\u3066\u3044\u308b\u3001Xamarin.Forms.XamlProvilder \u3092 NuGet \u3067\u516c\u958b\u3057\u307e\u3057\u305f\u3002\n<\/p>\n<p>\nNuGet Gallery | Xamrin.Forms Xaml Provider 0.1.1<br \/>\n<a href=\"https:\/\/www.nuget.org\/packages\/Xamarin.Forms.XamlProvider\/0.1.1\">https:\/\/www.nuget.org\/packages\/Xamarin.Forms.XamlProvider\/0.1.1<\/a>\n<\/p>\n<p><a href='http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2014\/07\/wpid-dworkblogimage20140717_01org.jpg'><img border='0' src='http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2014\/07\/wpid-dworkblogimage20140717_01thum.jpg'\/><\/a><\/p>\n<p>\nXAML\u306e\u6587\u5b57\u5217\u304b\u3089 ContentPage \u7b49\u3092\u4f5c\u308b\u306e\u3067\u3001\u3053\u3093\u306a\u98a8\u306bXAML\u5f62\u5f0f\u306e\u30c7\u30fc\u30bf\u3092C#\u306e\u30b3\u30fc\u30c9\u5185\u306b\u57cb\u3081\u8fbc\u3093\u3067\u8a18\u8ff0\u304c\u3067\u304d\u307e\u3059\u3002\n<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\npublic void LoadSample()\r\n{\r\n\tstring xml = @&amp;quot;&lt;?xml version=&#039;1.0&#039; encoding=&#039;utf-8&#039; ?&gt;\r\n\t\t&lt;ContentPage xmlns=&#039;http:\/\/xamarin.com\/schemas\/2014\/forms&#039;\r\n\t\t\t\txmlns:x=&#039;http:\/\/schemas.microsoft.com\/winfx\/2009\/xaml&#039;\r\n\t\t\t\tx:Class=&#039;XFormsPreview.NewPage&#039;&gt;\r\n\t\t&lt;StackLayout&gt;\r\n\t\t\t&lt;Label Text=&#039;New Page&#039;  \/&gt;\r\n\t\t\t&lt;Button Text=&#039;Click me&#039;  \/&gt;\r\n\t\t&lt;\/StackLayout&gt;\r\n\t\t&lt;\/ContentPage&gt;&amp;quot;;\r\n\r\n\tvar page = PageXaml.LoadXaml&lt;ContentPage&gt;(xml);\r\n\tAssert.IsNotNull(page);\r\n\tvar layout = page.Content as StackLayout;\r\n\tAssert.IsNotNull(layout);\r\n\tAssert.AreEqual(2, layout.Children.Count);\r\n\r\n<\/pre>\n<p>\n\u6587\u5b57\u5217\u304b\u3089\u52d5\u7684\u306b\u5909\u63db\u3059\u308b\u306e\u3067\u3001\u30d5\u30a1\u30a4\u30eb\u30ea\u30bd\u30fc\u30b9\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u57cb\u3081\u8fbc\u307e\u305b\u3066\u8aad\u307f\u8fbc\u3080\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\n<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n&#x5B;TestMethod]\r\npublic void GridDemoPage()\r\n{\r\n    var fs = File.OpenText(@&amp;quot;XamlGridDemoPage.xaml&amp;quot;);\r\n    var xaml = fs.ReadToEnd();\r\n    var page = PageXaml.LoadXaml&lt;ContentPage&gt;(xaml);\r\n\r\n    Assert.IsNotNull(page);\r\n    Assert.AreEqual(&amp;quot;Grid Demo Page&amp;quot;, page.Title );\r\n    Assert.AreEqual(new Thickness(0, 20, 0, 0), page.Padding);\r\n<\/pre>\n<p>\n\u3053\u308c\u3092 HTTP \u7d4c\u7531\u3067\u62fe\u3063\u3066\u304f\u308b\u3088\u3046\u306b\u3057\u305f\u306e\u304c XFormsPreviewer \u3067\u3059\u3002\n<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nasync void OnClickSample0(object sender, EventArgs e)\r\n{\r\n    var hc = new HttpClient();\r\n    try\r\n    {\r\n        var res = await hc.GetStringAsync(&quot;http:\/\/localhost:10150\/get\/0&quot;);\r\n        var page = PageXaml.LoadXaml(res);\r\n        await this.Navigation.PushAsync(page);\r\n    }\r\n    catch (Exception ex)\r\n    {\r\n        System.Diagnostics.Debug.WriteLine(ex.Message);\r\n    }\r\n}\r\n<\/pre>\n<p>\n\u5f53\u7136\u3001HTTP \u7d4c\u7531\u3067\u62fe\u3063\u3066\u304f\u308b\u306e\u3067\u3001\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u4e0a\u306b XAML \u30d5\u30a1\u30a4\u30eb\u3092\u914d\u7f6e\u3057\u3066\u304a\u3051\u3070\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u66f4\u65b0\u306a\u3057\u306b\u3001\u52d5\u7684\u306b Xamarin\u88fd XAML \u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u8868\u793a\u3092\u5909\u3048\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059&#8230;\u304c\u3001\u3044\u307e\u306e\u3068\u3053\u308d\u3001\u30d7\u30ec\u30d3\u30e5\u30fc\u306e\u6a5f\u80fd\u3057\u304b\u306a\u3044\u306e\u3067\u9759\u7684\u30da\u30fc\u30b8\u3057\u304b\u8868\u793a\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u90e8\u5206\u306f\u3061\u3087\u3046\u3069 Javascript \u7121\u3057\u306e WebView \u307f\u305f\u3044\u306a\u3082\u306e\u3067\u3059\u3002\n<\/p>\n<p>\n\u25a0\u540d\u524d\u3092\u53d6\u5f97\u3059\u308b\n<\/p>\n<p>\nver.0.1.1 \u3067\u306f\u3001x:Name \u3067 Element \u3092\u53c2\u7167\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002\n<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\npublic void TestName()\r\n{\r\n    string xml = @&amp;quot;&lt;?xml version=&#039;1.0&#039; encoding=&#039;utf-8&#039; ?&gt;\r\n&lt;ContentPage xmlns=&#039;http:\/\/xamarin.com\/schemas\/2014\/forms&#039;\r\n\t\t\t\txmlns:x=&#039;http:\/\/schemas.microsoft.com\/winfx\/2009\/xaml&#039;\r\n\t\t\t\tx:Class=&#039;XFormsPreview.NewPage&#039;&gt;\r\n\t&lt;StackLayout&gt;\r\n\t\t&lt;Label x:Name=&#039;label1&#039; Text=&#039;New Page&#039;  \/&gt;\r\n\t\t&lt;Button  x:Name=&#039;button1&#039; Text=&#039;Click me&#039;  \/&gt;\r\n\t&lt;\/StackLayout&gt;\r\n&lt;\/ContentPage&gt;\r\n&amp;quot;;\r\n         \r\n    var page = PageXaml.LoadXaml&lt;ContentPage&gt;(xml);\r\n    Assert.IsNotNull(page);\r\n    var layout = page.Content as StackLayout;\r\n\r\n    var label1 = page.FindByName&lt;Label&gt;(&amp;quot;label1&amp;quot;);\r\n    var button1 = page.FindByName&lt;Button&gt;(&amp;quot;button1&amp;quot;);\r\n    Assert.IsNotNull( label1 );\r\n    Assert.AreEqual(&amp;quot;New Page&amp;quot;, label1.Text);\r\n    Assert.AreEqual(&amp;quot;Click me&amp;quot;, button1.Text);\r\n}\r\n<\/pre>\n<p>\nXAML\u5185\u306b x:Name \u3067\u540d\u524d\u3092\u4ed8\u3051\u3066\u304a\u304f\u3068\u3001Xamarin.Forms \u3084 WPF\u306a\u3069\u3067\u306f\u3001\u305d\u308c\u305e\u308c\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u3057\u3066\u304f\u308c\u307e\u3059\u304c\u3001\u52d5\u7684\u306bXAML\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\u3059\u308b\u5834\u5408\u306f\u76f4\u63a5\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u53c2\u7167\u3057\u3065\u3089\u3044\u306e\u3067\u3001FindByName&lt;Label&gt;(&#8220;name&#8221;) \u306e\u3088\u3046\u306b\u53c2\u7167\u3057\u307e\u3059\u3002FindByName \u81ea\u4f53\u306f Xamarin.Forms \u306b\u3082\u3042\u308b\u3057\u3001Silverlight \u3067\u3088\u304f\u4f7f\u3046\u30d1\u30bf\u30fc\u30f3\u3067\u3059\u3002<br \/>\n\u3053\u3046\u3059\u308b\u3068\u3001\u56fa\u5b9a\u3067 Xamarin.Forms \u3092\u4f5c\u3063\u305f\u3068\u304d\u3068\u540c\u3058\u3088\u3046\u306b\u3001\u5404\u7a2e\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\n<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nvar page = PageXaml.LoadXaml&lt;ContentPage&gt;(xml);\r\nvar label1 = page.FindByName&lt;Label&gt;(&amp;quot;label1&amp;quot;);\r\nlabel1.Text = &amp;quot;change display&amp;quot;;\r\n<\/pre>\n<p>\n\u25a0BindingContent \u3092\u5b9f\u88c5\u4e2d\n<\/p>\n<p>\n\u305f\u3060\u3057\u3001x:Name \u3067\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u3063\u3066\u304f\u308b\u3068\u3001\u52d5\u7684\u306b\u30ed\u30fc\u30c9\u3055\u308c\u305f XAML \u3068\u306e\u63a5\u70b9\u304c\u591a\u304f\u306a\u3063\u3066\u3057\u307e\u3046\u306e\u3067\u3001\u3082\u3063\u3068\u6cbf\u7d50\u5408\u306b\u3059\u308b\u305f\u3081 BindingContext \u306e\u90e8\u5206\u3092\u5b9f\u88c5\u4e2d\u3067\u3059\u3002MVVM \u30d1\u30bf\u30fc\u30f3\u306b\u3057\u305f\u304c\u3063\u3066\u3001<br \/>\nINotifyPropertyChanged \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3068 ICommand \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u304c\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308c\u3070\u3001ViewModel \u304c\u305d\u306e\u307e\u307e\u5229\u7528\u3067\u304d\u308b\u611f\u3058\u306b\u306a\u308b\u4e88\u5b9a\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u52d5\u7684\u306bXamarin.Forms\u306eXAML\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\u3059\u308b\u3068\u304d\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066\u4f7f\u3063\u3066\u3044\u308b\u3001Xamarin.Forms.XamlProvilder \u3092 NuGet \u3067\u516c\u958b\u3057\u307e\u3057\u305f\u3002 NuGet Gallery | X &hellip; <a href=\"http:\/\/www.moonmile.net\/blog\/archives\/6038\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[23,62],"tags":[],"class_list":["post-6038","post","type-post","status-publish","format-standard","hentry","category-csharp","category-xamarin"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/6038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/comments?post=6038"}],"version-history":[{"count":2,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/6038\/revisions"}],"predecessor-version":[{"id":6040,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/6038\/revisions\/6040"}],"wp:attachment":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=6038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=6038"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=6038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}