跨不同屏幕大小缩放WPF应用程序中的元素

时间:2014-12-06 17:17:15

标签: c# 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>

3 个答案:

答案 0 :(得分:1)

您的问题是您已为所有控件设置了具体尺寸。删除控件的宽度和高度,并按照您想要的方式设置边距。

答案 1 :(得分:1)

移除宽度和高度,并将水平和垂直对齐设置为拉伸。

答案 2 :(得分:1)

如果您确实希望对象向上或向下缩放(而不是调整大小),并且您希望排列的宽高比保持最初的排列方式,则应使用WPF's ViewBox控件。