WPF、AnglePropertyと作成した依存プロパティをバインディング
作成した依存プロパティと
RenderTransformの中のRotateTransformのAnglePropertyをBindingしておいて
スライダーやテキストボックスともバインディング
今回のアプリのダウンロード先
デザイン画面
ヤフーブログのかんたんモードでXAMLを書くと投稿エラーになるから画像で
VBコード
今回はMainWindowの他にBorderクラスを継承したClass1の2つ
今回の方法は少し回りくどいかなあって気もするけどどうかなあ
回転角度のAnglePropertyはRenderTransformの中のTransformGroupのChildrenのどれかのRotateTransformの中っていう奥の方にあるから角度指定するときめんどくさかったけど今回のならMyAngleだけだからラク
Pixtack紫陽花2ndのときはスライダーのChangeValueイベント発生時に普通のプロパティを変更する方法だったかなあ、依存プロパティを使いたかったけど難しくてできなかった、今回それっぽく使えるようになったのでメモ
わかんないのが、DependencyProperty.Registerの4番目の引数を付けて初期値を設定したほうがいいのかなあ
初期値にDouble型の0を指定(普通に0を指定したら型が違うってエラーになったw)
Public Shared ReadOnly Property MyAngleProperty As DependencyProperty =
DependencyProperty.Register(NameOf(MyAngle),
GetType(Double),
GetType(Class1),
New PropertyMetadata(CDbl(0)))
NameOFが便利
6行目のNameOFってのはプロパティとかを指定するとStringに変換して返すだけなんだけど便利
a: NameOF(MyAngle)
b: "MyAngle"
a,bどちらでも同じ結果だしbのほうが短くて済むんだけど
もしMyAngleってプロパティ名を別の名前に変えたくなったとき
Myを取ってAngleに変更
NameOFの引数の方も自動で変わる
もし文字列指定の"MyAngle"だったら自動では変わらないので手動で変えることになると思っていたら
名前の変更時に出てくるこの画面で文字列を含めるにチェックを入れて変更すればできるみたい
でもNameOFのほうなら打ち間違えもないし確実だと思う
参照したところ
【WPF】自分で定義したプロパティにバインディングする – ザワプロ!ありがとうございます!
WPF4.5入門 その42 「WPFのプロパティシステム」 - かずきのBlog@hatena
WPF 依存プロパティの作り方 - Qiita
[VB 14.0 新機能] NameOf演算子 | HIRO's.NET Blog
コード全部
次回は翌日
WPF、ScaleTransformと作成した依存プロパティをBinding ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/14981395.html
関連記事
1年前
2016/5/26
WPFとVB.NET、TransformGroupのChildrenにAddする順番で結果が変わる ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/14169953.html
これも1年前
2016/4/29
WPFとVB.NET、Bindingしたままコントロールを直接変形、TransformGroupの中のRotateTransform ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/14098125.html