Как записать текущее местоположение (на холсте) окна MDIWow после его перемещения?

У меня есть приложение 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 ответ

Решение

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

Другие вопросы по тегам