0

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

4

1 回答 1

0

我没有让这个工作,而是找到了另一个支持 Position 属性的控件(它返回当前位置的 Point 对象)。http://jevgenijpankov.heliocode.com/articles/FloatingWindow.aspx上的 FloatingWindowControl

于 2011-04-07T19:40:45.763 回答