2017-04-25 12 views
0

の新しいタブを作成:XmlLayoutSerializerは、だから私はDockingManagerはこのようにXAMLで記述持っている代わりに、ロード

<ad:DockingManager 
    x:Name="DockingManager" 
    Margin="5" 
    DocumentHeaderTemplate="{DynamicResource DocumentHeaderTemplate}" 
    DocumentPaneControlStyle="{DynamicResource DocumentPaneControlStyle}" 
    DocumentsSource="{Binding TabControlItems, Source={StaticResource Locator}}" 
    LayoutItemContainerStyle="{DynamicResource LayoutItemContainerStyle}" /> 

と私は

var dockingManager = mw?.DockingManager; 
     if (dockingManager == null) 
     { 
      return null; 
     } 

     if (!File.Exists(@"Settings\TabLayout.config")) 
     { 
      File.Create(@"Settings\TabLayout.config"); 
     } 

     var serializer = new XmlLayoutSerializer(dockingManager); 
     serializer.LayoutSerializationCallback += (s, args) => { }; 
     serializer.Deserialize(@"Settings\TabLayout.config"); 

ように私のレイアウトをロードしようとしているが、代わりにしています私はそれが常に追加のタブをロード期待どのように読み込む。つまり3つのタブを保存してレイアウトをロードすると、6つのタブ、保存されたレイアウトの空のレイアウトが3つ、適切なコントロールの3つのデフォルトのレイアウトが表示されます。

何が起こっているか知っていますか?私はどこでもそれについて何かを見つけることができません。

思っていたいずれかに

答えて

0

問題がDocumentsSourceが移入された前に、私のレイアウトがロードされていたということでしたので、それを動作させるために、空のタブを追加しました。私はWindowLoadに私のレイアウトデシリアライズを設定しようとしたが、でもそれはあまりにも早くなってしまったので、私はこのタイマーを持っている:

mainWindow.Loaded += (sender, args) => 
     { 
      // I couldn't find a proper place to put this. 
      // I need an event after 100% of all setup is completed 
      var timer = new DispatcherTimer() 
      { 
       Interval = TimeSpan.FromSeconds(3) 
      }; 

      timer.Tick += (s, e) => 
      { 
       DockingManagerDeserialize(mainWindow); 
       timer.Stop(); 
      }; 

      timer.Start(); 
     }; 

をそして今、それは動作しますが、それは理想的ではないのですが、そのスタート。

関連する問題