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