使WPF接口不受显示尺寸的影响

时间:2016-02-17 16:35:45

标签: c# wpf xaml

好的,所以我正在开发一个C#WPF应用程序。此应用程序的MainWindow始终是全屏,但我需要根据分辨率调整控件。无论如何,我已经尝试了很多东西来实现这一目标。现在,我设置了网格长度&宽度为Auto。问题是我的控件由于某种原因向上移动到左边。下面是我的MainWindowXAML。 (顺便说一句:窗口包含:图像按钮,标签,矩形和文本框):

<Window x:Name="Menu" x:Class="App.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="App1" FontWeight="Bold"  Icon="Images/Core-IconSize.ico" WindowStartupLocation="CenterScreen" WindowStyle="ThreeDBorderWindow" WindowState="Maximized" ResizeMode="CanMinimize" Height="870" Width="1388">

    <Grid >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
     //Controls here.  
     </Grid>
</Window>

编辑:为控件添加了XAML。

1 个答案:

答案 0 :(得分:1)

如果屏幕尺寸不同,听起来您希望控件可以向上或向下缩放;而不仅仅是转移职位。

如果这是您想要的,您可以将Grid置于Viewbox控件内,从而达到此效果。 Viewbox然后会自动向上或向下缩放其内容以适应现有的不动产。

此外,您可能希望从窗口中删除高度和宽度属性,因为它们对于全屏应用程序来说是多余的。如果在XAML中编辑窗口时需要特定大小,可以设置designheight和designwidth属性。

示例没有 Viewbox

<Window x:Class="MVVM_Exploration.Windows.wndDataGrid"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="wndDataGrid" Height="300" Width="500">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Orientation="Horizontal">
        <Button Content="Load Text File" HorizontalAlignment="Left"
                Margin="10" Click="LoadTextFile"/>
            <Button Content="Save Text File" HorizontalAlignment="Left"
                    Margin="10" Click="SaveTextFile"/>
        </StackPanel>
        <TextBlock Grid.Row="1" Text="Some content here"/>
        <Button Content="Another Button" Grid.Row="2"
                        HorizontalAlignment="Left"/>
    </Grid>
</Window>

enter image description here

示例 Viewbox

<Window x:Class="MVVM_Exploration.Windows.wndDataGrid"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="wndDataGrid" Height="300" Width="500">
    <Viewbox>
    <Grid Width="200" Height="100">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Orientation="Horizontal">
        <Button Content="Load Text File" HorizontalAlignment="Left"
                Margin="10" Click="LoadTextFile"/>
            <Button Content="Save Text File" HorizontalAlignment="Left"
                    Margin="10" Click="SaveTextFile"/>
        </StackPanel>
        <TextBlock Grid.Row="1" Text="Some content here"/>
        <Button Content="Another Button" Grid.Row="2"
                        HorizontalAlignment="Left"/>
    </Grid>
    </Viewbox>
</Window>

enter image description here

根据网格及其内容的设置方式,您可能不需要为实际网格指定定义的大小。