Как записать текущее местоположение (на холсте) окна 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