C# 无法调用LayoutSerializationCallback

C# 无法调用LayoutSerializationCallback,c#,avalondock,C#,Avalondock,我使用的是AvalonDock,我会序列化和反序列化我的布局。但是回调(我使用ContentId创建正确对象的实例)并不总是被调用。由于这个原因,加载的机器不能正常工作。我试图添加一个“try-catch”,但没有抛出异常 这是我的代码: `var layoutSerializer=新的XmlLayoutSerializer(管理器) 谢谢你的帮助 您确定您的流没有问题吗?例如,如果配置文件不存在,则不会调用LayoutSerializationCallback方法 private void M

我使用的是AvalonDock,我会序列化和反序列化我的布局。但是回调(我使用ContentId创建正确对象的实例)并不总是被调用。由于这个原因,加载的机器不能正常工作。我试图添加一个“try-catch”,但没有抛出异常

这是我的代码:

`var layoutSerializer=新的XmlLayoutSerializer(管理器)


谢谢你的帮助

您确定您的流没有问题吗?例如,如果配置文件不存在,则不会调用LayoutSerializationCallback方法

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    try
    {
        MainWindow.logger.Debug("Entering: {0}", "MainWindow_Loaded");

        string filePath = Path.Combine(
            Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
            @"Jofta\Analyzer\configs\AvalonDock.config");

        if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath))
        {
            XmlLayoutSerializer serializer = new XmlLayoutSerializer(this.dockingManager);
            serializer.LayoutSerializationCallback += this.Serializer_LayoutSerializationCallback;
            serializer.Deserialize(filePath);
        }

        MainWindow.logger.Debug("Exiting: {0}", "MainWindow_Loaded");
    }
    catch (Exception ex)
    {
        MainWindow.logger.Error("Exception in: {0}", "MainWindow_Loaded");
        MainWindow.logger.Error("Message: {0}", ex.Message);
    }
}



private void Serializer_LayoutSerializationCallback(object sender, LayoutSerializationCallbackEventArgs e)
{
    try
    {
        MainWindow.logger.Debug("Entering: {0}", "serializer_LayoutSerializationCallback");

        if (e.Model.ContentId == ObjectExplorerViewModel.AnchorableContentId)
        {
            e.Content = Workspace.Instance.ObjectExplorer;
            return;
        }

        // ...
        // ...

        MainWindow.logger.Debug("Exiting: {0}", "serializer_LayoutSerializationCallback");
    }
    catch (Exception ex)
    {
        MainWindow.logger.Error("Exception in: {0}", "serializer_LayoutSerializationCallback");
        MainWindow.logger.Error("Message: {0}", ex.Message);
    }
}

我的文件还可以,我已经一步一步地调试了代码,没有抛出“反序列化”异常。最好发布更多细节。更多的代码片段。例如,配置文件的内容。是否所有的LayoutAcrolables和LayoutDocuments都有ID?如果有时调用回调方法,有时不调用回调方法,我仍然认为在这种情况下,问题出在配置文件中。若反序列化方法不会抛出异常,那个么这个问题无关紧要。例如,该配置文件没有LayoutChorables和LayoutDocuments。
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    try
    {
        MainWindow.logger.Debug("Entering: {0}", "MainWindow_Loaded");

        string filePath = Path.Combine(
            Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
            @"Jofta\Analyzer\configs\AvalonDock.config");

        if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath))
        {
            XmlLayoutSerializer serializer = new XmlLayoutSerializer(this.dockingManager);
            serializer.LayoutSerializationCallback += this.Serializer_LayoutSerializationCallback;
            serializer.Deserialize(filePath);
        }

        MainWindow.logger.Debug("Exiting: {0}", "MainWindow_Loaded");
    }
    catch (Exception ex)
    {
        MainWindow.logger.Error("Exception in: {0}", "MainWindow_Loaded");
        MainWindow.logger.Error("Message: {0}", ex.Message);
    }
}



private void Serializer_LayoutSerializationCallback(object sender, LayoutSerializationCallbackEventArgs e)
{
    try
    {
        MainWindow.logger.Debug("Entering: {0}", "serializer_LayoutSerializationCallback");

        if (e.Model.ContentId == ObjectExplorerViewModel.AnchorableContentId)
        {
            e.Content = Workspace.Instance.ObjectExplorer;
            return;
        }

        // ...
        // ...

        MainWindow.logger.Debug("Exiting: {0}", "serializer_LayoutSerializationCallback");
    }
    catch (Exception ex)
    {
        MainWindow.logger.Error("Exception in: {0}", "serializer_LayoutSerializationCallback");
        MainWindow.logger.Error("Message: {0}", ex.Message);
    }
}