Как записать текущее местоположение (на холсте) окна MDIWow после его перемещения? - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть приложение Silverlight 4, в котором есть холст с пятью MDIWindows.Свойства Canvas.Left и Canvas.Top установлены в XAML.Эти пять окон MDIWindows можно перемещать с помощью мыши.Я пытаюсь использовать IsolatedStorageSettings , чтобы сохранить их текущее местоположение, вызванное событием кнопки.Однако, когда я вызываю MDIWhwhat.GetValue (Canvas.LeftProperty) , я всегда получаю начальное значение Canvas.Left , как установлено в XAML, и то, что мне нужно, это текущий местоположение.Я пытался вызвать InvalidateArrange () и UpdateLayout () для обоих MDIWindow и LayoutRoot (холст).

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.Я предположил, что это было частью Silverlight из-за пространства имен System.Windows.Controls .Я не ожидал, что сторонний элемент управления будет использовать это пространство имен вместо своего собственного.

1 Ответ

0 голосов
/ 07 апреля 2011

Вместо того, чтобы заставить это работать, я нашел другой элемент управления, который поддерживает свойство Position (которое возвращает объект Point текущей позиции).FloatingWindowControl на http://jevgenijpankov.heliocode.com/articles/FloatingWindow.aspx

...