5つのMDIWindowsを搭載したキャンバスを備えたSilverlight4アプリがあります。Canvas.LeftプロパティとCanvas.TopプロパティはXAMLで設定されます。これらの5つのMDIWindowsは、マウスで移動できます。ボタンイベントから呼び出された現在の場所を保存するためにIsolatedStorageSettingsを使用しようとしています。ただし、MDIWhatever.GetValue(Canvas.LeftProperty)を呼び出すと、常にXAMLで設定されたCanvas.Leftの初期値が取得され、必要なのは現在の場所です。MDIWindowとLayoutRoot(キャンバス)の両方でInvalidateArrange()とUpdateLayout()を呼び出してみました。
Private Sub btnSaveLayout_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnSaveLayout.Click
MDIWhatever.InvalidateArrange()
MDIWhatever.UpdateLayout()
LayoutRoot.InvalidateArrange()
LayoutRoot.UpdateLayout()
_settings.Clear()
_settings.Add("MDILeft", MDIWhatever.GetValue(Canvas.LeftProperty))
_settings.Add("MDITop", MDIWhatever.GetValue(Canvas.TopProperty))
_settings.Save()
End Sub
これは簡単なはずです、私は何が欠けていますか?
編集:これは、Codeplexからのサードパーティのコントロールです。System.Windows.Controls名前空間のため、Silverlightの一部であると想定しました。サードパーティのコントロールが独自の名前空間を使用する代わりに、この名前空間を使用することは期待していませんでした。