毎度の話だが
WPFを自動生成する際の注意点。
public void SetName(FrameworkElement element, string name){ element.Name = name; }
っていう風にして名前をセットする場合には、注意点が2つ
名前検索出来るようにする場合のおまじない
C#側のコードでエレメントを生成した際、
セットしたWindowからエレメント要素を取り出したい場合には
FrameworkElement element = this.FindName(name);
のようにして検索したいが、普通にChildren.Add()を使用するだけだとエラーになってしまう。
なんと、
this.RegisterName(element.Name, element);
とすることで、名前の一覧に生成したエレメントの情報を登録できるみたい。
FrameworkElement.Nameの制限
全く気づかなかったんだが、Name属性の頭って数字だめなのね・・・
もらったIDをそのままNameに入れるようにしてたら、
数字の連番が来てたという罠・・・
仕方ないので
public const ELEMENT_NAME_HEADER = "Element_"; public void SetName(FrameworkElement element, string name){ element.Name = ELEMENT_NAME_HEADER + name; }
というやっつけに近い事をする俺ェ・・・