WPF始めました
あらまし
86アセンブラ⇒C言語⇒VB2.0 4.0 6.0 ⇒ VB.net(.net Framework)ときて、
PHP+JavaScriptとか業務でちょっとやってみたり
Go言語やPythonやらC#やら自宅で勉強したりしてました。
仕事をとるためにも、WPFに挑戦しました。
XAML理解の壁
WPFは、C# + XAMLで構成するとのこと。
C#はいいとして、このXAML、まずサンプル等を見ても全く理解できず。
習うより慣れろと思い、プログラム作成しました。
しかし、Buttonを置いたり、Textを置いたりしても思ったようなデザインになりません。
次に実際の事例をあげます。
コントロールのDockプロパティがない。成形はどうするの?
Windowsフォーム開発の経験はあり、応用は効くと思っていましたが、これが大きな間違いでした。
Windowsフォームみたいに、デザイナ上でButtonをポトピタをするとXAMLではこのようになります。
XAMLではこう表現されます。
<Button Content="Button" HorizontalAlignment="Left" Height="140" Margin="170,180,0,0" VerticalAlignment="Top" Width="240"/>
フォームの上にくっつけたいので、
Button.Dock=Top
をさせたいが、Dockプロパティがありません。
HorizontalAlignment="Left"
VerticalAlignment="Top"
という指定があるから左上にくっつけと言っている模様。
Margin="170,180,0,0"
が邪魔なのか?
試行錯誤の結果、以下のようにすっきりさせると
<Button Content="Button" />
こうなりました。
なるほど、コントロールを配置するとき、何も指定しなければ親のコントロール(ここではGrid)の領域全体に配置されるわけですか。
ならば、
Button.Dock=Left
をしたければ
<Button Content="Button" HorizontalAlignment="Left" />
Button.Dock=Top
ならば
<Button Content="Button" VerticalAlignment ="Top" />
となりました。
XAMLの学習コストは高いが・・・
WPFでは上記のようにコントロールの配置に限らず、プロパティが刷新されています。
UIの表現方法が、Windowsフォームと異なるので
XAMLの学習コストは高い
は本当だと思います。
ただし、これを乗り越えて得られるUIのデザインは格好良いと思います。
更に最新のフレームワークWinUI3でもXAMLで表現するみたいなので、コストが高いなりの温厚はあると思いたいですね。
Discussion