2014-12-06 88 views
1

我正在嘗試創建一個跨越多種屏幕尺寸的全屏WPF應用程序。但是,我發現,窗口元素在屏幕尺寸不同時不能正確縮放和定位。在不同屏幕尺寸下縮放WPF應用程序中的元素

即在VS2013

enter image description here

即運行

enter image description here

時,我該如何獲得程序相應地擴大?例如,我希望將按鈕定位到屏幕的左側或右側,並且可以將列表框放大以填滿屏幕。

這是我到目前爲止的代碼:

<Window x:Class="FYP.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" WindowStartupLocation="CenterScreen" WindowState="Maximized"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="2*"/> 
      <ColumnDefinition Width="2*"/> 
     </Grid.ColumnDefinitions> 
     <Button Content="View Messages" Grid.Column="1" HorizontalAlignment="Left" Margin="203,20,0,0" VerticalAlignment="Top" Width="97" Name="ViewMessagesButton"/> 
     <Button Content="Log Out" Grid.Column="1" HorizontalAlignment="Left" Margin="305,20,0,0" VerticalAlignment="Top" Width="65" Name="LogOutButton"/> 
     <TextBlock HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Height="20" Name="DateTimeTextBlock"/> 
     <ListBox HorizontalAlignment="Left" Height="434" Margin="20,60,0,0" VerticalAlignment="Top" Width="350"/> 
     <ListBox HorizontalAlignment="Left" Height="135" Margin="20,60,0,0" VerticalAlignment="Top" Width="350" Grid.Column="1"/> 
     <ListBox HorizontalAlignment="Left" Height="278" Margin="20,216,0,0" VerticalAlignment="Top" Width="350" Grid.Column="1"/> 
    </Grid> 
</Window> 

回答

1

如果您確實希望對象放大或縮小(而不是調整大小),並且希望排列的縱橫比保持最初排列的方式,則應該使用WPF's ViewBox控件。

1

你的問題是,你已經設置的具體尺寸給你所有控件。刪除控件的寬度和高度,並按照需要設置邊距。

1

刪除寬度和高度,並將水平和垂直對齊設置爲拉伸。