コントロールのテンプレートを変更する

Styleプロパティではコントロールのプロパティで指定できる範囲でしか見た目を変更できません。 プロパティを超えた範囲でコントロールの見た目を変更するにはTemplateプロパティを変更します。 Templateプロパティ内にControlTemplateを配置し、その中にコントロールの見た目を記述することで外観を大きく変更したコントロールを作成できます。 <Button> <Button.Template> <ControlTemplate TargetType=”Button”> <StackPanel Width=”100″ Height=”40″ Background=”BlueViolet”> <Ellipse Fill=”White” Width=”20″ Height=”20″ /> <TextBlock Text=”Click Me” /> </StackPanel> </ControlTemplate> </Button.Template> </Button> また、リソースを使うと複数のボタンにTemplateを適用できます。 <Page> …省略… <Page.Resources> <ControlTemplate x:Key=”buttonTemplate” TargetType=”Button”> <StackPanel Width=”100″ Height=”40″ Background=”BlueViolet”> <Ellipse Fill=”White” Width=”20″ Height=”20″ /> <TextBlock Text=”Click Me” /> </StackPanel> </ControlTemplate> </Page.Resources> <StackPanel> <Button x:Name=”button1″ Template=”{StaticResource buttonTemplate}” /> <Button x:Name=”button2″…

コントロールのスタイルを設定する

コントロール1つ1つのプロパティをリソースにして共通化させていてはかなり苦労が必要になります。 同一のコントロールはこの色、幅にしたいなど、複数のプロパティを一括でリソース化する必要があります。 XAMLではそのような複数のプロパティを一括でリソースとして宣言するために、Styleという型があります。 StyleはこのようにResource内で定義し、TargetTypeで適用するコントロールを指定します。 さらにSetterを用いてプロパティの値を指定します。 使うときはコントロールのStyleプロパティにStaticResourceでリンクさせることで複数のコントロールの外観を一括で変更できます。 <Page> …省略… <Page.Resources> <Style x:Key=”buttonStyle” TargetType=”Button”> <Setter Property=”Content” Value=”Touch Me” /> <Setter Property=”Margin” Value=”5,5,5,5″ /> <Setter Property=”Background”> <Setter.Value> <SolidColorBrush Color=”SkyBlue” /> </Setter.Value> </Setter> </Style> </Page.Resources> <StackPanel> <Button x:Name=”button1″ Style=”{StaticResource buttonStyle}” /> <Button x:Name=”button2″ Style=”{StaticResource buttonStyle}” /> </StackPanel> </Page> また、Styleプロパティは優先度が低く、他のプロパティに同一の値が設定された場合、プロパティを直接指定したほうが優先されます。 ですのでこのように共通化しない部分だけプロパティで指定してやることで同じような外観で必要な部分だけ変更できます。 <Button x:Name=”button1″ Style=”{StaticResource buttonStyle}” Content=”Click Me” /> <Button x:Name=”button2″…

リソースを共通化する

XAMLリソース XAMLによって記述されたコントロールやFrameworkElementはそのプロパティを変更することによってデザインや挙動を変更することができます。 プロパティに指定した値を複数のコントロール間で共有するためにはその値をリソースとして別の場所に定義し、複数のコントロールからそのリソースを参照することで共通化を行うことができます。 XAMLリソースには以下の2種類のリソースタイプがあります。 StaticResource ThemeResource StaticResourceはその名の通り静的で、アプリの実行時のリソースは常に固定されます。 それに対しThemeResourceはアプリの実行時のシステムテーマによって使用するリソースが動的に変化します。 StaticResource 現在の要素から見える範囲にあるリソースに対し、キーを指定してリソースを参照します。 例えば以下のようにPageのリソース内にbuttonContentというキーのstringリソースを配置し、buttonコントロールからはContentプロパティにStaticResourceで参照させています。 <Page> …省略… <Page.Resources> <x:String x:Key=”buttonContent”>Click Me</x:String> </Page.Resources> <Grid> <Button x:Name=”button1″ Content=”{StaticResource buttonContent}” /> </Grid> …省略… </Page> このようにすることで複数のボタンコントロールに対し、共通の文字列でContentプロパティを指定できます。 <Page> …省略… <Page.Resources> <x:String x:Key=”buttonContent”>Click Me</x:String> </Page.Resources> <Grid> <Button x:Name=”button1″ Content=”{StaticResource buttonContent}” /> <Button x:Name=”button2″ Content=”{StaticResource buttonContent}” /> </Grid> …省略… </Page> リソースの型は、StringやDoubleなど、基本的なプリミティブ型以外にもコントロールのプロパティに指定できる型ならリソースとして宣言可能です。 特にSolidColorBrush型はコントロールの色ブラシを定義するため、リソースとしてよく宣言します。 リソースの宣言箇所 XAMLリソースは親要素またはApp.xamlのResourceプロパティに記載されたリソースでなければ参照することができません。 例えばこのようにGridのResourceプロパティに記載したbuttonWidthリソースは範囲外であるPageのWidthプロパティからは参照できず、Grid内でしか参照できません ですので通常は、共通のリソースを参照したい単位でリソース化します。…

DreamSparkアカウントでAzureMachineLearningを無料で使う方法

Azure MLはMicrosoftアカウントに紐付いたAzureサブスクリプションに対し、1つ10GBのフリーワークスペースを割り当ててくれます。 このフリーワークスペースにさえアクセスできればDreamSparkアカウントでもAzure MLを10GB無料で使えます。 ※この方法は2016/2/23時点でAzureMLがFreeワークスペースを提供してくれている情報です。今後どうなるかはわかりません やり方としては、まずAzure ポータルにアクセスします。 DreamSparkでサインインし、ポータルが使えればOKです その後、https://studio.azureml.netにアクセスします。 すると、「Get Started」というボタンが中央に表示されますのでクリックします。 すると以下のようなダイアログが表示されるのでSign inを押します。 すると普通に10GBのフリーワークスペースを割り当てられ、Azure MLを利用できます。 ちなみに私のフリーワークスペースですがこれだけ実験シートを作っても2GBなので結構遊べると思います。 ポイント DreamSparkのポータルではそもそもAzureMLのMLStudioにアクセスできませんがURLに直接アクセスするとちゃんとフリーのワークスペースを割り当ててくれます。

MVP Community Camp 2016名古屋会場で登壇してきました

2016/2/20にMVP Community Camp2016名古屋会場でAzure Machine Learningについて登壇してきました スライドはこちらです。 Azure MLとなると、どうしても機械学習の話から入らなければいけなかったので、最後のセッションに機械学習の話をするのは参加者的にも負担が大きかったと思います。 最終的に2つのデモを行い、2つとも成功したので良かったと思います。 反省点 プロジェクターにつなぐと解像度的にデモをしにくかった 時間がなくなってしまってデモを高速に終わらせてしまった 機械学習をうまく伝えれなかった(そもそも理解が甘い) 話せなかったところ(理解してなかったところ) MLのPython、R連携 MLのNoteBook MLのBathExecution 統計データの表示 名古屋のComCampは初めてでしたが内容も濃くて非常に有益な時間だったと思います。