2015-06-11 56 views
0

我正在开发一个适用于Windows 10的应用程序。我以前曾经研究过少量的Windows 7应用程序,现在我正在尝试使用许多差异。我在通用应用程序中尝试运气,而且我想要集中一些控件,以便无论屏幕/窗口大小都以登录详细信息为中心。Windows 10 xaml控制中心屏幕

我一直在寻找这方面的帮助一段时间,但我发现很多这是在它的“婴儿期;换句话说,我没有找到很多地方找到相关信息,没关系帮助。我希望在这里有人能指引我走向正确的方向?

这里的桌面视图窗口:

enter image description here

这里就是我的意思,文本框,标签ECT不与窗口的缩放移动,更不用说不同的屏幕尺寸。

enter image description here

</Page.Resources> 
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" FlyoutBase.AttachedFlyout="{StaticResource FlyoutBase1}"> 
    <CheckBox x:Name="chckRemember" Content="Remember" HorizontalAlignment="Left" Margin="1038,441,0,0" VerticalAlignment="Top" ClickMode="Press"/> 
    <TextBox x:Name="txtUserName" HorizontalAlignment="Left" Margin="818,441,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="202"/> 
    <PasswordBox x:Name="txtPassword" HorizontalAlignment="Left" Margin="818,478,0,0" VerticalAlignment="Top" Width="202"/> 
    <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="723,446,0,0" TextWrapping="Wrap" Text="User Name:" VerticalAlignment="Top"/> 
    <TextBlock x:Name="textBlock_Copy" HorizontalAlignment="Left" Margin="735,478,0,0" TextWrapping="Wrap" Text="Password:" VerticalAlignment="Top"/> 
    <Button x:Name="btnSignin" Content="Login" HorizontalAlignment="Left" Margin="959,539,0,0" VerticalAlignment="Top" Width="61"/> 
    <Button x:Name="btnCreatAccount" Content="Create Account" HorizontalAlignment="Left" Margin="818,539,0,0" VerticalAlignment="Top" Width="116"/> 
    <ProgressRing x:Name="progressring1" HorizontalAlignment="Left" Margin="873,592,0,0" VerticalAlignment="Top" Height="87" Width="103"/> 
    <TextBlock x:Name="txtStatus" HorizontalAlignment="Left" Margin="818,510,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" FontSize="9.333"/> 
    <Grid HorizontalAlignment="Left" Height="180" Margin="692,412,0,0" VerticalAlignment="Top" Width="496"/> 
</Grid> 

+1

可能对发布XAML也有所帮助 - 如果所有控件都位于网格中,则可以使用Horizo​​ntalContentAlignment和VerticalContentAlignment来实现您想要的效果 – RoguePlanetoid

+0

嗨,@RoguePlanetoid感谢您的回复。我现在已经包含了我的xaml。 – user3516240

回答

3

不要使用保证金进行定位。仅使用边距来强制对象周围的边距。

要在其父级中将元素居中,请将其Horizo​​ntalAlignment或VerticalAlignment设置为居中。

要进行更多控制,请使用布局控件(如Grid,StackPanel和RelativePanel)将控件放置在所需的位置。对于您的布局,您可以在网格中设置3行和3列,以便将控件整体放置,然后设置Horizo​​ntalAlignment以将控件放置在网格中。这里有一个快速更新XAML中,将让事情为中心,只要窗口是足够宽的一切,以适应(可以使用自适应技术回流东西窄的意见)

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" > 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"></RowDefinition> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"></RowDefinition> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="240"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <CheckBox Grid.Column="2" Grid.Row="1" Margin="10,0" x:Name="chckRemember" Content="Remember" HorizontalAlignment="Left" VerticalAlignment="Top" ClickMode="Press"/> 
    <TextBox Grid.Column="1" Grid.Row="1" x:Name="txtUserName" HorizontalAlignment="Stretch" TextWrapping="Wrap" Text="" VerticalAlignment="Top" /> 
    <PasswordBox Grid.Column="1" Grid.Row="2" x:Name="txtPassword" HorizontalAlignment="Stretch" VerticalAlignment="Top" /> 
    <TextBlock x:Name="textBlock" Margin="10,0" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right" TextWrapping="Wrap" Text="User Name:" VerticalAlignment="Center"/> 
    <TextBlock x:Name="textBlock_Copy" Margin="10,0" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Right" TextWrapping="Wrap" Text="Password:" VerticalAlignment="Center"/> 
    <Button Grid.Column="1" Grid.Row="3" x:Name="btnSignin" Content="Login" HorizontalAlignment="Left" VerticalAlignment="Top"/> 
    <Button Grid.Column="1" Grid.Row="3" x:Name="btnCreatAccount" Content="Create Account" HorizontalAlignment="Right" VerticalAlignment="Top" /> 
    <ProgressRing x:Name="progressring1" HorizontalAlignment="Left" VerticalAlignment="Top" Height="87" Width="103"/> 
    <TextBlock x:Name="txtStatus" HorizontalAlignment="Left" TextWrapping="Wrap" Text="" VerticalAlignment="Top" FontSize="9.333"/> 
    <Grid HorizontalAlignment="Left" Height="180" VerticalAlignment="Top" Width="496"/> 
</Grid> 

Quickstart: Defining layoutsAdding layout controls在MSDN 。

1

以上是正确的方法。使用具有自动功能的网格布局作为行高或列宽是一种很好的方法,因为它们会自动与您一起扩展。根据项目的难度,您也可以使用自适应触发器。这里有一个使用自适应触发器的简单例子,http://jamesqquick.com/windows-10-adaptive-triggers-intro/。例如,通过这种方式,可以根据屏幕大小增大文字大小。

通过测试所有不同的尺寸,您可以做得很好。这个很重要!我通常只是作为Windows 10应用程序运行,并将其调整到各个方向!

+0

您能具体参考您认为正确的方法吗? – AnotherDeveloper

+0

要简单地保持按钮,文本块等居中,您可以简单地将水平和垂直对齐设置为居中。这个问题的潜在问题是,如果你使用的是非常大的设备,如果你使用与手机相同的字体大小,可能很难阅读。另一方面,如果您使用大字体,然后在手机上运行,​​则可能无法在屏幕上显示。这些是上述示例中的一些潜在问题。再一次,在某些情况下完美工作,但在其他情况下完美。 –

+0

如果您处于某种情况下,例如,根据屏幕大小更改字体大小,重新排列UI等,则需要使用AdaptiveTriggers。将AdaptiveTriggers视为进一步定制您的用户界面以支持所有不同平台和屏幕尺寸的另一途径。 –