2011-11-24 105 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一個嵌套的導航控制。

佈局明智我會建議Grid有兩個rows,包含另外的表格(在Grid.Row="1")有兩個columns

DockPanels是可能不應該使用的悲傷控件,除非有人指着你的槍並告訴你。

+0

嗨H.B.我可以嘗試移除dockpanel並使用grid來佈局這個結構,但是這並不回答如何將導航窗口放入另一個窗口(參考上面的xaml代碼)的問題。實際上,我不希望將導航窗口放在另一個窗口中作爲運行時錯誤,而是尋求能夠按照上述屏幕快照實現佈局的解決方案 –

+0

@simeh:Windows不能成爲任何東西的子項,如果您有任何東西需要託管在另一個窗口中,您應該將其轉換爲「UserControl」。事實上,你應該把所有事情都做成'UserControl',這樣你就不會遇到這樣的問題。 –

+0

@simeh:在這種情況下,你不能改變它,所以你應該使用一個'Frame'控件來代替我的想法。 –