WPF の面倒なところ:コントロールの移動

面倒というよりも、考え方の違いですが。

Windows Form であれば、フォーム上のコントロールの位置は、

Control.Location.X = 100;
Control.Location.Y = 100;

というように簡単に設定が出来ます。ところがWPFだとこうはいかない。なぜななら コントロールが置いてあるコンテナとなるパネルによって異なるからです。

Canvas : Position Left, Top
Grid : Margin Left, Top

当然親元ごとに異なりますから、Left や Top といったプロパティが直接触れる形でコントロールにインプリメントされているわけではありません。

Canvas.SetLeft( Control, 100);
Canvas.SetTop( Control, 100);

Grid であれば、

Thickness tk = new Thickness(100, 100, 100, 100);
Control.Margin = tk;

こんなときなんかは、こんな風に描きたいところですが

Control.Margin.Left = 100;
Control.Margin.Top = 100;

ダメなんですね。なれて覚えてくればなんとも無いのですが、今まで当たり前にやってきたことが出来ない点は「不便」と感じてしまうかも。

しかし、Grid の性質を考えればこういった形で設定することが理にかなっていますし慣れれば非常にシンプルな実装が可能です。まずは小さいプログラムからはじめることが大事ですね。