2012年1月20日金曜日

XmlSerializerでGenericなリストを使いたい!

XmlSerializerを使って、シリアライズなどするとき、GenericのList等は使えません。
ただ、配列は使用可能なので、次のようなコードで対応します。
 [XmlIgnore]
 public List myHogeList { set; get; }
 [XmlElement("myHogeList")]
 public Hoge[] myHogeArray
 {
  set
  {
   myHogeList = new List();
   myHogeList.AddRange(value);
  }
  get
  {
   return myHogeList.ToArray();
  }
 }

考え方は、XmlIgnoreを使ってシリアライズ対象外に、配列を使って無理矢理Listと相互変換。

2012年1月9日月曜日

WPFのモーダルダイアログの表示位置が上手く設定出来ない場合

ウィンドウのプロパティに「WindowStartupLocation="CenterOwner"」を設定し、「window.ShowDialog();」
としても、思う位置にウィンドウが表示されない。

なんかよくわからないが、window.Owner を設定しないのが原因らしい。
window.Owner = this;
window.ShowDialog();
とすると上手くいくようだ。
ただ、ユーザコントロール上だと
window.Owner = this; 
はできないので、
window.Owner = Window.GetWindow(this);
とするとよい。