【问题标题】:Layout navigation window布局导航窗口
【发布时间】:2011-11-24 02:57:53
【问题描述】:

我想使用以下布局结构构建一个 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>

【问题讨论】:

    标签: wpf xaml layout navigationwindow


    【解决方案1】:

    你不能添加一个窗口作为任何东西的子窗口,你可以在这里使用一个可嵌套的导航控件,它被称为Frame

    布局方面我会推荐一个Grid 和两个rows,包含另一个网格(在Grid.Row="1" 中)和两个columns

    DockPanels 是可悲的控件,可能不应该使用,除非有人用枪指着你并告诉你这样做。

    【讨论】:

    • 嗨 H.B.我可以尝试删除停靠面板并使用网格来布局此结构,但这并不能回答有关如何将导航窗口放入另一个窗口的问题(请参阅上面的 xaml 代码)。我实际上不想将导航窗口放在另一个窗口中,因为它是一个运行时错误,而是寻求一种可以按照上面的屏幕截图实现布局的解决方案
    • @simeh:Windows 不能是任何东西的子代,如果您有需要托管在另一个窗口中的东西,您应该将其转换为UserControl。实际上,您应该将所有内容都设为UserControl,这样您就不会遇到此类问题。
    • @simeh:在这种情况下,您无法更改它,因此我认为您应该使用Frame 控件。
    • 事实上,在我将其更改为 NavigationWindow 尝试之前,我目前正在使用 frame 方法。我改变的原因是因为当我使用框架打开另一个“页面”时,后续页面会与当前页面重叠并产生多层效果......看截图在这里注意到粗蓝线,它已经变成了多层imageshack.us/photo/my-images/819/pageserror.png
    • @simeh:你如何打开它们?您应该只从一个页面导航到另一个页面,这不应该发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多