如何调整C#WPF程序的大小以适应任何屏幕分辨率

时间:2015-11-21 19:48:48

标签: c# wpf xaml resize window-resize

我正在试图弄清楚如何调整我的C#WPF程序的大小以基本适合任何屏幕分辨率。我正在尝试将我的程序安装到屏幕分辨率 1280 x 1024 的计算机上。我无法找到有关如何准确执行此操作的任何信息,当然我可以根据特定屏幕确定程序的尺寸,但每台计算机的屏幕分辨率可能有所不同吗?我尝试使用此处提供的明显解决方案:Resize WPF Window and contents depening on screen resolution但它根本没用。

即。我用过:(另外,我还不确定是否需要将HorizontalAlignment&amp; VerticalAlignment设置为&#34;伸展&#34;但是我还是做了。)< / p>

Title="my screen" Height="{Binding SystemParameters.PrimaryScreenHeight}" Width="{Binding SystemParameters.PrimaryScreenWidth}" WindowStartupLocation="CenterScreen" WindowState="Maximized">
    <Grid Name="myGrid" Background="LightGray" Margin="0,0,2,-30" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <TextBox Name="stuffTB" HorizontalAlignment="Left" Height="28" Margin="751,252,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="186" />

...

每当我在尺寸为 1280 x 1024 的计算机上运行 exe 时,它会切断网格中的内容。任何建议或帮助都会很棒,甚至链接到示例都会很棒。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您真的想强制调整窗口中的所有控件,可以使用ViewBox https://msdn.microsoft.com/pl-pl/library/system.windows.controls.viewbox%28v=vs.110%29.aspx

但IMO你做错了。设计好的WPF UI的基础是:

  1. 如果您想要保留窗口的某些部分/百分比(尽管内容为
  2. ),请使用网格列和行
  3. 使用DockPanels,StackPanels,WrapPanels等来安排UI
  4. 使用ScrollViewer可以查看控件是否设置了一些最小尺寸以及它们将被截断的特定分辨率
  5. 看看我为你创建的这个样本

        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="2*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="100" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <StackPanel Grid.Row="0" Grid.ColumnSpan="2" Background="Blue" Orientation="Horizontal">
                <Button>Button</Button>
                <Button>Button</Button>
                <Button>Button</Button>
            </StackPanel>
            <DockPanel Grid.Row="1" Grid.Column="1">
                <Rectangle DockPanel.Dock="Right" Width="100" Fill="Red"></Rectangle>
                <Ellipse DockPanel.Dock="Left" Fill="AliceBlue"></Ellipse>
            </DockPanel>
            <ScrollViewer Grid.Row="1">
                <StackPanel>
                    <Button Height="200"></Button>
                    <Button Height="200"></Button>
                    <Button Height="200"></Button>
                    <Button Height="200"></Button>
                    <Button Height="200"></Button>
                    <Button Height="200"></Button>
    
                    <Button Height="200"></Button>
                    <Button Height="200"></Button>
                </StackPanel>
            </ScrollViewer>
        </Grid>