Dynamicさに欠けるXAML様式

先の
<CheckBox IsChecked=”{Binding *****, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}”/>
はどうやってC#でコードするのか?
残念ながら正解は・・・なかった!
頑張って色々C#コードでやってるのも見かけたが、ピッタリそのままとはいかない様だ。
XAMLを読み込んでフォームを作る仕組みが実はC#とは無関係に実装されているようで、C#でコードするのはお勧めしませんXAMLファイルをお使いくださいということらしい。
仕方が無いので、上のテキストをXamlReaderに読ませると、エラー CheckBoxって何?とか言い出す。
XAMLファイルの内容をXamlWriterに出力させてみると、
一番Topのノードに妙な属性が付いていた。
xmlns=”http://schemas.microsoft.com/・・・/xaml/presentation”
これが無いと読めないのはなんとなく判る。
更に驚いたのは、
Binding = “False”
になっていたこと。
つまり WPFのフォーム・クラスでは、Bindingに関する何かのstaticなメソッドをインプリメントし、こうならないようにカバーしているのだろう。
でも面倒なのでreplaceで先の設定に書き換えて、XamlReaderに読ませると動くようになった。
※この時点で『ローカル』ビューに出ているテキストをソースに貼りつけBining部分を手直ししてもいいだろうけど、VSの画面で手直しできる方が楽。
さて、やっとのこれでCheckBox付のカラムを好きなだけ勝手に増やせるListViewができた。
単独のコントロールならフォームに_***** のセッター、ゲッターで十分なのだろうけど、DataGridやListViewの場合はカレントの行を意識するのは容易ではない。
残りはコンボボックスかなリストの中身をいつも最新にするには・・・上の方法で十分だろう。(笑
 
と云う感じで、XAMLの論理設計や実装の悪さを痛感した。
XAMLのフォームエディタでフォーム・サイズを変えた時に良い感じになるようにレイアウトを変えようとすると、ただただ変になっていくし・・・どうしようもない。
こうなったら、XAMLを手で直接書き換えた方がマシだ。
それにjQuery-UIもやっぱり変なものでいっぱいだし、使ってみると、妙な制限が多くて、パーツとして使えないので画面の飾りとして使うしなかいのは御承知の通り。
こんな思いをするならどっちも、自前でXAMLもどきやFormもどきを作った方がマシ。
だから、自分用でOK。




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA