2011-11-24 6 views
0

다음 레이아웃 구조를 사용하여 WPF 창 응용 프로그램을 작성하고 싶습니다. ASP.Net의 "마스터 페이지"와 같이 왼쪽 프레임/창에서 제목과 버튼을 고려하십시오. 오른쪽 프레임에서는 WPF 탐색 창이어야합니다.레이아웃 탐색 창

마지막 스택 패널에서 UI 요소로 탐색 창을 포함하면 오류가 발생하고 오류가 발생합니다. 아래의 이미지 스크린 샷에 따라 전체 레이아웃을 어떻게 디자인해야합니까? 감사합니다

<Window x:Class="MainWindow" 
    xmlns:local="clr-namespace:ClientSocket"   
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title=" Desktop" Height="841" Width="1271" WindowStartupLocation="CenterScreen" WindowState="Maximized"> 
    <DockPanel> 
     <StackPanel DockPanel.Dock ="Top" Orientation="Horizontal" Background="Red"> 
      <TextBlock Background="red" FontSize ="36" Width="482" > 
      Main Title 
      </TextBlock>   
     </StackPanel> 
     <StackPanel Background="LightGray" DockPanel.Dock ="Left" Width="145"> 
      <Button Content="Button1" Name="btnAndroid" Width="119" Margin="3" BorderBrush="{StaticResource {x:Static SystemColors.InfoBrushKey}}" /> 
      <Button Content="Button2" Name="btnDownloads" Width="119" Margin="3" BorderBrush="{StaticResource {x:Static SystemColors.InfoBrushKey}}" /> 
      <Button Content="AddNewDownloads" Height="37" Name="Button1" Width="133" /> 
     </StackPanel> 
     <StackPanel> 
     <NavigationWindow Height="auto" Width="auto" Name="nwMain" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="Blue" BorderThickness="1" /> 
     </StackPanel> 
    </DockPanel> 
</Window> 

enter image description here

답변

2

당신은 아무것도의 자식으로 창을 추가 할 수 없습니다, 당신은 여기 대신, 그것은 Frame라고 사용할 수있는 중첩 가능한 탐색 컨트롤이 있습니다.

레이아웃이 많다는 나는 두 rows이 두 columns와 (Grid.Row="1"에서) 다른 그리드를 포함하는 Grid로 추천 할 것입니다.

DockPanels은 누군가가 당신에게 총을 겨누고 지시하지 않는 한 사용해서는 안되는 슬픈 통제입니다.

+0

안녕하세요. H. 선창을 제거하고 그리드를 사용하여이 구조를 배치 할 수는 있지만 탐색 창을 다른 창에 배치하는 방법에 대한 질문에는 대답하지 않습니다 (위 xaml 코드 참조). 실제로 런타임 오류로 다른 창 안에 탐색 창을 넣고 싶지 않지만 위의 스크린 샷에 따라 레이아웃을 얻을 수있는 솔루션을 찾으십시오. –

+0

@simeh : Windows는 아무 것도 할 수 없습니다. 다른 창 내부에서 호스팅 될 필요가있다면 당신은 그것을'UserControl'으로 변환해야합니다. 실제로 당신은 모든 것을 'UserControl'처럼 만들어서 그런 문제에 빠지지 않게해야합니다. –

+0

@simeh :이 경우 변경할 수 없으므로 대신 '프레임'컨트롤을 사용해야합니다. –

관련 문제