XAML UI 布局问题
XAML UI Layout Issues
我最近刚获得 Windows 10 和 Visual Studio 2015,并决定尝试学习如何构建通用应用程序。我已经阅读了 windows 10 和 windows 8 通用应用程序的 Microsoft 指南,但他们似乎没有提及任何内容。
我在测试 HelloWorld 应用程序时注意到的第一个问题是,如果我调整 StackPanel 的大小,使它更小并且更围绕它包含的项目,到某个点它会在运行时覆盖项目,尽管事实上,StackPanel 边框不会跨越任何东西。
另一个问题(与 StackPanel 问题半相关)必须处理项目放置。在我完成的所有 GUI 工作中,项目放置似乎从来都不是问题。如果我需要在 UI 的右侧工作或将某些东西放在小 window 的中心,我可以这样做。一般来说,项目在 .xaml 设计 windows 中的放置并不能反映它在运行时的样子。如果我尝试将 HelloWorld StackPanel 内容居中(无论是否调整 StackPanel 的大小),如果我最大化 window(如果不是 50 像素),它只会在运行时看起来像它。那么这是否意味着所有通用应用 UI 都需要从左上角开始构建?
编辑:
这里有一些图片链接,显示了我所描述的内容。
这是我移动堆栈面板时发生的情况:
https://goo.gl/photos/D47PHtkd1nTGJTyo8 -> 在 vs
https://goo.gl/photos/wVH1uPdB43a9oSdf7->运行
我会 post 链接到我拥有的其他图片,但我还没有代表。
编辑:
xaml代码:
<StackPanel Margin="120,30,0,0">
<TextBlock HorizontalAlignment="Left" Text="Hello World" FontSize="36"/>
<TextBlock Text="What's your name?"/>
<StackPanel Orientation="Horizontal" Margin="0,20,0,20">
<TextBox x:Name="nameInput" Width="300" HorizontalAlignment="Left"/>
<Button Content="Say "Hello""/>
</StackPanel>
<TextBlock x:Name="greetingOutput"/>
</StackPanel>
我只是将其粘贴到代码块中,这完全来自 windows 10 个通用应用程序教程的 hello world。我从未对代码本身进行任何更改,我只是使用 UI 设计器进行了更改。
理想情况下,您应该 post 您的 XAML,但从屏幕截图中我可以看到您依赖于设置 Margin
- 我假设您拖放了控制在设计器上,并使用 UI 进行布局。更好的方法是使用 HorizontalAlignment
和 VerticalAlignment
属性以您想要的方式布局 UI,并依赖 Margin
实际 "margins"(额外控件周围的空白)。
我最近刚获得 Windows 10 和 Visual Studio 2015,并决定尝试学习如何构建通用应用程序。我已经阅读了 windows 10 和 windows 8 通用应用程序的 Microsoft 指南,但他们似乎没有提及任何内容。
我在测试 HelloWorld 应用程序时注意到的第一个问题是,如果我调整 StackPanel 的大小,使它更小并且更围绕它包含的项目,到某个点它会在运行时覆盖项目,尽管事实上,StackPanel 边框不会跨越任何东西。
另一个问题(与 StackPanel 问题半相关)必须处理项目放置。在我完成的所有 GUI 工作中,项目放置似乎从来都不是问题。如果我需要在 UI 的右侧工作或将某些东西放在小 window 的中心,我可以这样做。一般来说,项目在 .xaml 设计 windows 中的放置并不能反映它在运行时的样子。如果我尝试将 HelloWorld StackPanel 内容居中(无论是否调整 StackPanel 的大小),如果我最大化 window(如果不是 50 像素),它只会在运行时看起来像它。那么这是否意味着所有通用应用 UI 都需要从左上角开始构建?
编辑: 这里有一些图片链接,显示了我所描述的内容。 这是我移动堆栈面板时发生的情况:
https://goo.gl/photos/D47PHtkd1nTGJTyo8 -> 在 vs
https://goo.gl/photos/wVH1uPdB43a9oSdf7->运行
我会 post 链接到我拥有的其他图片,但我还没有代表。
编辑: xaml代码:
<StackPanel Margin="120,30,0,0">
<TextBlock HorizontalAlignment="Left" Text="Hello World" FontSize="36"/>
<TextBlock Text="What's your name?"/>
<StackPanel Orientation="Horizontal" Margin="0,20,0,20">
<TextBox x:Name="nameInput" Width="300" HorizontalAlignment="Left"/>
<Button Content="Say "Hello""/>
</StackPanel>
<TextBlock x:Name="greetingOutput"/>
</StackPanel>
我只是将其粘贴到代码块中,这完全来自 windows 10 个通用应用程序教程的 hello world。我从未对代码本身进行任何更改,我只是使用 UI 设计器进行了更改。
理想情况下,您应该 post 您的 XAML,但从屏幕截图中我可以看到您依赖于设置 Margin
- 我假设您拖放了控制在设计器上,并使用 UI 进行布局。更好的方法是使用 HorizontalAlignment
和 VerticalAlignment
属性以您想要的方式布局 UI,并依赖 Margin
实际 "margins"(额外控件周围的空白)。