2015-06-11 49 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視爲進一步定製您的用戶界面以支持所有不同平臺和屏幕尺寸的另一途徑。 –