WPFとVB.NET、ControlTemplateをコードで作成
ControlTemplateをコードで作成
デザイン画面とXAML
VBコード
WPFとVBでアプリ作る準備その1、マウスドラッグでコントロールの移動 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/13900213.html
WPFとVBでアプリ作る準備その2、ControlTemplateの中のControlを取得する ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/13906217.html?type=folderlist
http://blogs.yahoo.co.jp/gogowaten/13900213.html
WPFとVBでアプリ作る準備その2、ControlTemplateの中のControlを取得する ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/13906217.html?type=folderlist
この辺りからの続きになるかな
Imageコントロールは枠線がないけどマウスドラッグ移動が手間
思いついたのが
それにはControlTemplateを使えば良さそう
Imageコントロールを入れたControlTemplateを持ったThumbを作ればいい
ってことで今まではググッて見つけた方法でControlTemplateを作っていたのが
これ、XAMLで書いていく方法
Window.ResourcesにControlTemplateを作っておいて(10から17行目)
これを適用したいコントロールのTemplateプロパティで指定(21行目)する方法
今回はこれをVBコードで同じことができたのでメモ
コードで書くと得するのが動的作成ができることと
XAMLのほうは書かなくていいので
こうなる
そのかわりVBのコードは増えるけどねw
動的作成ができるのが大きい
ControlTemplateの作成
Dim ct As New ControlTemplateControlTemplateを作って、VisualTreeプロパティに中に入れたいコントロールを指定する
指定するにはFrameworkElementFactoryってのが必要みたいで
中に入れたいコントロールのタイプと目印用の名前をつければいいみたいCanvasなら後からいくつでもImageでもButtonでも入れられるから便利
あとはこのControlTemplateを使いたいコントロールのTemplateプロパティに指定するだけ
今回はThumbを作って、そのTemplateプロパティにControlTemplateを指定する
Dim t As New Thumbこれでできあがりな感じなんだけど動的作成には
t.Template = ct 'ControlTemplateを指定
↓が必要
Templateの中のコントロールを取得するには目印用の名前が必要
さっきccって名前を付けておいたのでこれをTemplate.FindNameメソッドで使って
どれでもできるんだけど、さっきの再構成をしていないと取得できなくてNothingになる
中のCanvasが取得できればなんでも好きなのを入れられるのでここではRectangleとtextBlockを入れている
意味ないけどボタンやテキストボックスも入れたところ
コードで書くことができるといろいろ融通がきく
今回のコード全部
Wpf_test117_コントロールテンプレートControlTemplate - Visual Studio Team Services
https://gogowaten.visualstudio.com/WPF/_git/WPF_test7?path=%2FWpf_test117_%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88ControlTemplate&version=GBmaster&_a=contents
https://gogowaten.visualstudio.com/WPF/_git/WPF_test7?path=%2FWpf_test117_%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88ControlTemplate&version=GBmaster&_a=contents
2016年5月22日追記
関連記事
WPFとVB.NET、ControlTemplateを使ったThumbを回転表示する時に回転させるのはどれがいいのか ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14157487.html
http://blogs.yahoo.co.jp/gogowaten/14157487.html
2018/04/06
カラーピッカーのdll(ライブラリ)作った、WPFユーザーコントロール ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15447603.html
https://blogs.yahoo.co.jp/gogowaten/15447603.html
○がControlTemplateを使ったThumb
2019/03/30は3年後
ListBoxのItemTemplate(DataTemplate)をC#コードで ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15918212.html
https://blogs.yahoo.co.jp/gogowaten/15918212.html