2012-04-12 2 views
4

두 번째 패널이 맨 아래에 도킹되어 있고 AutoHide로 설정된 Avalon Docking에 문제가 있습니다. UI가 실행되면 창은 기본적으로 Docked/Visible로로드됩니다. 나는 그것을 숨기거나 최소화하고 싶다.Avalon Dock 자동로드시 문제 숨기기

<ad:DockingManager> 
    <ad:ResizingPanel Orientation="Vertical"> 
     <ad:DocumentPane> 
      <ad:DocumentContent> 
       <... data grid that fills the view> 
      </ad:DocumentContent> 
     <ad:DocumentPane> 
     <ad:DockablePane> 
      <ad:DockableContent Title="output" DockableStyle="AutoHide" IsCloseable="False"> 
       <...some control> 

나는 다양한 "해킹"의 OnLoad, 당신은 UI가 창을로드

outputDockablePane.ToggleAutoHide(); 

그 작동, 의미가 숨겨져 있습니다 아발론 포럼에 제안 시도했다. 그러나 .cs 코드에서 자동 숨기기를 전환하면 런타임에 도크 헤더를 클릭하여 창 표시/부동화가 작동하지 않게합니다. 따라서 DockingMananger.OnMouseUp()을 연결하고 몇 가지 부울 상태를 파싱하고 수동으로 ToggleAutoHide()를 호출해야합니다. 나에게 해킹처럼 보입니다.

private void OnDockManagerLoaded(object sender, RoutedEventArgs e) 
    { 
     if(_firstTimeLoad && !_isDataGridLoaded) 
     { 
       outputDockablePane.ToggleAutoHide(); 
       _forcedToAutoHide = true; 
     } 
    } 

    private void OnDockingManagerMouseUp(object sender, MouseButtonEventArgs e) 
    { 
     if (_forcedToAutoHide) 
     { 
      _forcedToAutoHide = false; 

      outputDockableContent.Activate(); 
      outputDockablePane.ToggleAutoHide(); 
     } 
    } 

내가 완전히 놓친 거지, 및/또는 더 나은 방법 설정/속성이 있는가 : 여기

내가 적절하고 깨끗한 해결책을 찾을 때까지 내가 지금 뭐하는 거지입니까?

답변

0

4 년 아직 Avalon Docking에는 동일한 문제가 있습니다. 아직 적절한 해결책을 찾지 못했지만 해결 방법 논리를 개선하려고 노력했습니다.

private void OnDockingManagerMouseUp(object sender, MouseButtonEventArgs e) 
{ 
    if (outputDockableContent.IsAutoHidden) 
    { 
     outputDockableContent.IsActive = false; 
    } 
}