0

5つのMDIWindowsを搭載したキャンバスを備えたSilverlight4アプリがあります。Canvas.LeftプロパティとCanvas.TopプロパティはXAMLで設定されます。これらの5つのMDIWindowsは、マウスで移動できます。ボタンイベントから呼び出された現在の場所を保存するためにIsolatedStorageSettingsを使用しようとしています。ただし、MDIWhatever.GetValue(Canvas.LeftProperty)を呼び出すと、常にXAMLで設定されたCanvas.Leftの初期値が取得され、必要なのは現在の場所です。MDIWindowLayoutRoot(キャンバス)の両方で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の一部であると想定しました。サードパーティのコントロールが独自の名前空間を使用する代わりに、この名前空間を使用することは期待していませんでした。

4

1 に答える 1

0

これを機能させるのではなく、Positionプロパティ(現在の位置のPointオブジェクトを返す)をサポートする別のコントロールを見つけました。FloatingWindowControl(http://jevgenijpankov.heliocode.com/articles/FloatingWindow.aspx )

于 2011-04-07T19:40:45.763 に答える