我有一个 Silverlight 4 应用程序,它有一个带有五个 MDIWindows 的画布。Canvas.Left和Canvas.Top属性在 XAML 中设置。这五个 MDIWindows 可以用鼠标移动。我正在尝试使用IsolatedStorageSettings保存从按钮事件调用的当前位置。但是,当我调用MDIWhatever.GetValue(Canvas.LeftProperty)时,我总是得到 XAML 中设置的Canvas.Left的初始值,而我想要的是当前位置。我尝试在MDIWindow和LayoutRoot(画布)上调用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 的一部分。我没想到第三方控件会使用这个命名空间而不是拥有自己的命名空间。