2019年10月21日月曜日

WPF勉強_3

スタイル
FrameworkElementの特定のプロパティに設定する値を記述した情報を保存するスタイルオブジェクトを作成できる。
public Style ()
public Style (Type targetType)
public Style (Type targetType, Style basedOn)
TargetTypeには適用する対象の型
生成したStyleオブジェクトにスタイル情報を追加するにはSetterプロパティ

Style style = new Style(typeof(Button));
style.Setters.Add(new Setter(Control.FontSizeProperty, 30.0));
style.Setters.Add(new Setter(Control.ForegroundProperty, Brushes.Red));

コントロールテンプレート
スタイルはオブジェクトの依存プロパティに設定する値を統一化するための手段に対して、オブジェクトの構造を提供するデータがコントロールテンプレート
コントロールの外観をカスタマイズするための手段
Templateプロパティとして実装
ボタンなどの一般的なコントロールの見た目はデフォルトのTemplateにより実装
描画構造はVisualTreeプロパティに設定(多分ContentPresenterとかのアレ)

            ControlTemplate template = new ControlTemplate(typeof(Button));
            template.VisualTree = new FrameworkElementFactory(typeof(Ellipse));
            template.VisualTree.SetValue(Ellipse.FillProperty, Brushes.Blue);
FrameworkElementFactoryに型情報を渡すと内部でその型がプロパティとして公開している項目を依存プロパティとして生成している?

テンプレートの定義は静的なものなので、テンプレートで定義する要素に対してバインディングを行える

VisualStateManager
Mouseoverとかのイベントを触りやすくしてくれた感じ?
追って勉強

MergedDictionaries 
リソースディクショナリを複数ファイル利用したいときに利用




0 件のコメント:

コメントを投稿