| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
==[[Silverlight ]] UI フレームワーク==
[[Silverlight]] | [[C Sharp]] |
**以下のサイトからメモ
==リソース==
*[[WPF ]] UIフレームワークでは、リソース・ディクショナリにオブジェクトを追加しておくことで、そのオブジェクトをリソースとして、XAML上で簡単に再利用できる。
===単純なリソースの例===
*実行時に生成される、SolidColorBrushオブジェクトが1つで済むため、メモリを節約
=====リソース・ディクショナリを使用=====
<StackPanel>
<StackPanel.Resources[[R]]esources>
<SolidColorBrush x:Key="BlueBrush" Color="Blue"/>
</StackPanel.Resources[[R]]esources> <Ellipse Fill="{StaticResource Static[[R]]esource BlueBrush}" Height="150" /> <Ellipse Fill="{StaticResource Static[[R]]esource BlueBrush}" Height="150" />
</StackPanel>
===リソースの種類===
|イミディエイト・リソース
|FrameworkElementオブジェクトのResourcesプロパティ(ResourcesDictionary型)に宣言されたリソース
|FrameworkElementはUIElementの派生クラス。すべてのUI要素は、これを継承しているため、自身のResourcesプロパティにリソースを持つことができる。リソースの宣言要素と、その子要素から参照できる。FrameworkElementはU[[IE]]lementの派生クラス。すべてのUI要素は、これを継承しているため、自身のResourcesプロパティにリソースを持つことができる。リソースの宣言要素と、その子要素から参照できる。
|-
|アプリケーション・リソース
|ApplicationオブジェクトのResourcesプロパティ(ResourceDictionary型)に宣言されたリソース
|アプリケーションの実装と管理で共通に使用される機能を提供。標準的なWPF/Silverlightのプロジェクトテンプレートでは、App[[Silverlight]]のプロジェクトテンプレートでは、App.xamlファイルとその分離コードで使用されている。通常は、<Application>要素のResourceプロパティに宣言されたリソースが、アプリケーション・リソースとなり、どこかれでも参照できる
|-
|}
*通常文字列が使用されるが、一部機能においてはオブジェクトが使用されることがある。
===静的リソース参照===
*多くの場合、リソースの参照には、StaticResourceマークアップ拡張機能を使用した、静的リソース参照が使用される。多くの場合、リソースの参照には、Static[[R]]esourceマークアップ拡張機能を使用した、静的リソース参照が使用される。
=====具体例=====
<Ellipse Fill="{StaticResource Static[[R]]esource BlueBrush}"/><blockquote>WPFでは、StaticResourceExtensionクラスのパラメータに、BlueBrushというキーを指定するのと同意となるが、Silverlight WPFでは、StaticResourceExtensionクラスのパラメータに、BlueBrushというキーを指定するのと同意となるが、[[Silverlight]] では、XAML専用となっており、StaticResourceExtensionクラスは存在しない</blockquote>
====リソース検索====
*リソースの検索順
===スタイルの機能===
*FrameworkElementクラスがもつStyleプロパティにStyleオブジェクトを設定するという方法で使用する。
*Resourcesプロパティと同様、ほぼすべてのUI要素で使用できる[[R]]esourcesプロパティと同様、ほぼすべてのUI要素で使用できる
=====プロパティ属性構文=====
<Ellipse Fill="Blue" Height="80" Width="160"/>
=====StackPanelのリソースに登録し、共有する例=====
<StackPanel>
<StackPanel.Resources[[R]]esources>
<Style x:Key="EllipseStyle" TargetType="Ellipse">
<Setter Property="Fill" Value="Blue" />
<Setter Property="Width" Value="160" />
</Style>
</StackPanel.Resources[[R]]esources> <Ellipse Style="{StaticResource Static[[R]]esource EllipseStyle}" /> <Ellipse Style="{StaticResource Static[[R]]esource EllipseStyle}" />
</StackPanel>
<blockquote>派生元のクラスが共通で、そのクラスに存在するプロパティに限定されれば、異なるクラス感でも同じスタイルを共有できる。</blockquote>
*スタイルは継承元となるスタイルを、BasedOn プロパティに設定することで継承可能。
<StackPanel>
<StackPanel.Resources[[R]]esources>
<Style x:Key="EllipseBaseStyle" TargetType="Ellipse">
<Setter Property="Fill" Value="Blue" />
</Style>
<Style x:Key="EllipseStyle" TargetType="Ellipse"
BasedOn="{StaticResource Static[[R]]esource EllipseBaseStyle}">
<Setter Property="Stroke" Value="Yellow"/>
<Setter Property="StrokeThickness" Value="10"/>
</Style>
</StackPanel.Resources[[R]]esources>
<Ellipse Style="{StaticResource Static[[R]]esource EllipseStyle}" /> <Ellipse Style="{StaticResource Static[[R]]esource EllipseStyle}" />
</StackPanel>
===暗黙的にスタイルを適用===
*x:Key 値を指定すると、Style がすべての要素に自動的には適用されなくなります。
<StackPanel>
<StackPanel.Resources[[R]]esources>
<Style TargetType="Ellipse">
<Setter Property="Fill" Value="Blue" />
<Setter Property="Width" Value="160" />
</Style>
</StackPanel.Resources[[R]]esources>
<Ellipse />
<Ellipse />
*MSDNライブラリを参照
**[http://msdn.microsoft.com/ja-jp/library/aa358533.aspx WPFテーマ]
*Silverlight「コントロールのスタイルとテンプレート」[[Silverlight]]「コントロールのスタイルとテンプレート」|http://msdn.microsoft.com/ja-jp/library/cc278075(VS.95).aspx]
*Expression Blendの[コントロールのパーツ(テンプレート)の編集]-[コピーの編集]機能を利用
*XamlWriterクラスのSaveメソッドを使用し、実行時にコードからTemplateプロパティの内容をシリアライズ([[WPF]])
===TemplateBinding===
=====角丸ボタンを作成する例=====
<StackPanel>
<StackPanel.Resources[[R]]esources>
<ControlTemplate x:Key="ButtonTemplate" TargetType="Button">
<Border Background="{TemplateBinding Background}" CornerRadiusCorner[[R]]adius="30" Padding="10">
<TextBlock Text="{TemplateBinding Content}"
Foreground="White"
</Border>
</ControlTemplate>
</StackPanel.Resources[[R]]esources>
<Button Content="Test1" Background="LightBlue"
Template="{StaticResource Static[[R]]esource ButtonTemplate}" Margin="30" />
<Button Content="Test2" Background="Blue"
Template="{StaticResource Static[[R]]esource ButtonTemplate}" Margin="30" />
</StackPanel>

案内メニュー