2013-10-15 5 views
1

을 보여 나던 :이 경우, How to place instance of window in LayoutAnchorable AvalonDock 2AvalonDock LayoutAnchorable 내가이 여기에 질문 befoere 것처럼 약간 같은 문제가 제어

을 내가 AvalonDock 2.0을 사용하고, Caliburn.Micro 및 Mahapps.Metro.

실제로 내 viewmodel을 'LayoutAnchorable'에 매핑 할 수있는 것처럼 보이지만 클릭하면 해당 컨트롤의 내용 (MetroContentControl)이 표시됩니다. 어떻게해야합니까? 보이는 보이지 않는 ContentControl처럼 보입니다.

XAML 코드

<ad:LayoutRoot.BottomSide> 
        <ad:LayoutAnchorSide> 
         <ad:LayoutAnchorGroup> 
          <ad:LayoutAnchorable Title="Test" ContentId="123"> 
           <DataTemplate> 
            <Controls:MetroContentControl cal:View.Model="{Binding ActiveLogViewModel}" /> 
           </DataTemplate> 
          </ad:LayoutAnchorable> 
         </ad:LayoutAnchorGroup> 
        </ad:LayoutAnchorSide> 
       </ad:LayoutRoot.BottomSide> 

는 사용 및 컨트롤을 배치에서 AD 2.0의 제한이 있습니까? 그렇게하는 것이 가장 좋은 방법은 무엇입니까?

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellView.xaml

그런 다음 응용 프로그램을 시작하고 당신이 그것을 원하는처럼 패널을 구성

업데이트

<ad:DockingManager x:Name="adManagerTop" DocumentsSource="{Binding DocumentSources}" Margin="0,0,0,40"> 
      <ad:DockingManager.Theme> 
       <ad:MetroTheme /> 
      </ad:DockingManager.Theme> 
      <ad:DockingManager.LayoutItemContainerStyle> 
       <Style TargetType="{x:Type ad:LayoutItem}"> 
        <Setter Property="Title" Value="{Binding Model.Title}"/> 
        <Setter Property="CanClose" Value="{Binding Model.CanClose}"/> 
        <Setter Property="CanFloat" Value="{Binding Model.CanFloat}" /> 
       </Style> 
      </ad:DockingManager.LayoutItemContainerStyle> 
      <ad:DockingManager.LayoutItemTemplate> 
       <DataTemplate> 
        <Controls:MetroContentControl cal:View.Model="{Binding Content}" /> 
       </DataTemplate> 
      </ad:DockingManager.LayoutItemTemplate> 
      <ad:LayoutRoot> 
       <ad:LayoutPanel> 
        <ad:LayoutDocumentPane /> 
       </ad:LayoutPanel> 
      </ad:LayoutRoot> 

    </ad:DockingManager> 

답변

0

난 그냥 AnchorablesSource 바인딩하고 DocumentsSource 것 내 응용 프로그램이처럼 않았다 사용자가 처음으로 프로그램을 시작할 때입니다. XmlLayoutSerializer을 사용하여 디스크에 상태를 저장하고 XML을 프로그램의 리소스로 포함합니다. 레이아웃을로드 할 때 디스크의 레이아웃을 사용하거나 프로그램에 포함 된 레이아웃을 사용하십시오.

+0

레이아웃 구성 파일을 사용하는 아이디어가 아직 마음에 들지 않았습니다. 나는 그것을 미래에 사용하려고 노력할 것입니다. 문제는 Anchors가 숨겨져 있지 않으면 컨트롤의 내용을 볼 수 있지만 숨겨진 경우에는 그렇지 않다는 것입니다. – Insight

+0

그 나, 다시 지금 나는 이유를 안다. MetroWindow는 'AllowTransparency'를 true로 설정합니다. false로 설정하면이 문제는 사라지고 임베디드 웹 브라우저도 현재 작동하는 것처럼 보입니다. 그래도, 아마도 레이아웃을위한 설정이 필요할 것입니다. – Insight