📣

WPF始めました

2023/01/07に公開

あらまし

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