WPF面对不同分辨率的应用程序窗口大小

时间:2014-02-04 16:01:41

标签: c# wpf screen-resolution

我有一个WPF应用程序。为了在所有屏幕尺寸上显示全屏,我实现了MinHeight,MinWidth& Horizo​​ntalAlignment =“Stretch”VerticalAlignment =“Stretch”在Window&容器也是。当应用程序在低分辨率屏幕上运行时,我遇到了一些问题。窗口从屏幕右侧切割 - 这不会在右上角显示最小,最大,关闭btns。

如果我在其中添加布局代码,则窗口在所有分辨率中都是正确的,但它会在菜单栏上方和下方结束时生成空白区域。在移除时,它们没有空间且一切都很好,但右侧在低分辨率屏幕中被切断。使用ViewBox,布局上方和下方的空间。我的XML代码如下:

CODE UPDATED

    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <!-- MENU BAR -->
        <Menu Grid.Row="0" x:Name="myMnus" VerticalAlignment="Top" Cursor="Hand" HorizontalAlignment="Stretch" IsMainMenu="True" Grid.ColumnSpan="2">
           .............
        </Menu>

        <ToolBarTray HorizontalAlignment="Stretch"  Background="White" Margin="0,19,114,0" VerticalAlignment="Top" Grid.ColumnSpan="2"  >
             ..............
        <ToolBarTray>

        <TabControl Grid.Row="1" Name="tabControl1" HorizontalAlignment="Left"  Margin="0,3,0,0" VerticalAlignment="Top" 
                TabStripPlacement="Bottom" Grid.RowSpan="2" BorderThickness="4,25,4,1" FontSize="13">
        </TabControl>

        <TabControl Grid.Row="2" Name="tabControl4" HorizontalAlignment="Left" Margin="0,323,0,0" VerticalAlignment="Stretch" 
                TabStripPlacement="Bottom" BorderThickness="4,25,4,1"  FontSize="13" Background="White" Width="227">
        </TabControl>

        <TabControl TabStripPlacement="Bottom" MinHeight="415" MinWidth="480" VerticalAlignment="Stretch"  HorizontalAlignment="Stretch" Grid.Row="1" Grid.Column="1" Name="tabChildContainer" Margin="227,3,207,0" BorderThickness="4,25,4,1" Grid.RowSpan="2" >

        </TabControl>

    </Grid>

我认为通过在Horizo​​ntalAlignment和VerticalAlignment中使用Stretch以及MinWidth和MinHeight,它会在水平和垂直方向占用所有可用空间。但是tabChildContainer TabControl没有根据代码进入它应该去的右端。

1 个答案:

答案 0 :(得分:2)

这是您的问题开始的地方:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="762.976"/>
    <ColumnDefinition Width="751.024"/>
    <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>

无论何时在UI中设置精确的像素大小,您都会要求确切地提出这些问题。为应用程序的各个部分设置确切的大小更像是一个WinForms的东西...... WPF有很多控件可以为你调整内容的大小...你正在使用一个,Grid ......只是不正确。 / p>

其次,在整个用户界面上使用ViewBox 非常不寻常 ... 不会帮助您。最好的办法是简单地删除它和所有硬编码维度,并充分利用"*"中的"Auto"Grid值。当控件以这种方式调整自身大小(或Grid调整大小)时,用户使用的分辨率无关紧要。