個人的嗜好の話です。
Webアプリ開発で HTMLのデザイナー画面とソース画面とプログラムソースの3画面を切り替えて開発するのがダルイです。
コントロール類は極力、動的生成して、Controls.Add()で対処することが多いです。AJAXのサーバーコントロールアプリでは、なんとなく「出来ない」と思って放置していたのですが、やってみると可能でした。
サンプル画面: http://www.ognogn.com/AJAX/ServerExtensions/UpdatePanel/DynamicAdd_UpdatePanel.aspx
MasterPageと各頁のAJAX連携のために、MasterPageにはScriptManagerを貼り付けています。
各頁にはScriptManagerProxyを貼り付けます。これも動的生成して貼り付け可能ですが、ややこしくなるので固定で張ってます。
各頁にコントロールを貼り付けるために、Panelを固定で貼り付けてます。(ここらが非スマートです。コンテナーとなるPaneも動的生成可能な手法をご存じでしたら知恵を貸してください。あいたら返します。)
UpdatePanel内にあるButtonとLabelは、部分更新が可能です。
UpdatePanel外にあるButtonは頁が更新されてしまいます。そこで、
Button button2 = new Button();
button2.ID = "Btn2";
button2.Text = "現在時刻(UpdatePanel外+Triger.add)";
button2.Click += new EventHandler(button_Click);
updatePanel.ContentTemplateContainer.Controls.Add(button2);
これで生成したButton2のClickイベントを PostBackTriggerで処理して貰うように登録します。
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.EventName = "Click";
trigger.ControlID = "Btn2";
updatePanel.Triggers.Add(trigger);
このようにすると、任意の箇所に配置したコントロールのTrigerが 部分更新の対象となります。
コードでこれらが処理可能になるので、楽になります。デザイナー主導型の人には嫌われそうですが。
XAMLもコードで記述したい派です。