毎度の話だが

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;
}

というやっつけに近い事をする俺ェ・・・