c# - 申请解析问题

标签 c# wpf xaml window resolution

这是我一直跳过并留到最后的东西,因为我似乎找不到答案,而且我已经找了很长时间。

我在 Window 中有一个应用程序,我已将应用程序构建到我的屏幕分辨率为 1600 x 900。如果我在分辨率为 1024 x 768 的屏幕上运行该应用程序,我的整个界面将不会缩小.

示例。

enter image description here

现在我知道你们中的很多人会考虑添加 Dockpanels 等......但我已经尝试过这样做。当您更改分辨率时,它不起作用,它只会将对象固定到一个位置。

我想要发生的事情。

enter image description here

如果你们中有人知道这个恼人问题的解决方案,请告诉我。

我对分辨率了解不多,只知道我已经做了几个小时的研究。

编辑1

这是我的一些 XAML:

<DockPanel HorizontalAlignment="Left" Height="236" LastChildFill="False" Margin="380,150,0,0" VerticalAlignment="Top" Width="792">
        <DataGrid x:Name="dgFake" VerticalAlignment="Center" Height="236" ItemsSource="{Binding}" Foreground="#FF474747" BorderBrush="#FFBDBDBD" HorizontalGridLinesBrush="{x:Null}" VerticalGridLinesBrush="{x:Null}" CanUserResizeRows="False" ScrollViewer.CanContentScroll="True" Background="#FFEEFAFF" RowBackground="#FFEEFAFF" RowHeaderWidth="0" RowHeight="25" AutoGenerateColumns="False" Width="792" DockPanel.Dock="Left" FontSize="16" TextBlock.TextAlignment="Center" HorizontalContentAlignment="Stretch" SelectionChanged="dgFake_SelectionChanged">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding FFF}" Header="FFF" Visibility="Hidden" CanUserResize="False" CanUserSort="False" CanUserReorder="False" IsReadOnly="True" Width="*" />
                <DataGridTextColumn Binding="{Binding EEE}" Header="EEE" CanUserResize="False" CanUserSort="False" CanUserReorder="False" IsReadOnly="True" Width="*" />
                <DataGridTextColumn Binding="{Binding GGG}" Header="GGG" CanUserResize="False" CanUserSort="False" CanUserReorder="False" IsReadOnly="True" Width="*"/>
                <DataGridTextColumn Binding="{Binding CCC}" Header="CCC" CanUserResize="False" CanUserSort="False" CanUserReorder="False" IsReadOnly="True" Width="*"/>
                <DataGridTextColumn Binding="{Binding BBB}" Header="BBB" CanUserResize="False" CanUserSort="False" CanUserReorder="False" IsReadOnly="True" Width="*"/>
                <DataGridTextColumn Binding="{Binding AAA}" Header="AAA" CanUserResize="False" CanUserSort="False" CanUserReorder="False" IsReadOnly="True" Width="*"/>
                <DataGridTextColumn Binding="{Binding DDD}" Header="DDD" CanUserResize="False" CanUserSort="False" CanUserReorder="False" IsReadOnly="True" TextBlock.TextAlignment="Center" Width="*"/>
            </DataGrid.Columns>

<Label x:Name="lblView" Content="Select View ..." HorizontalAlignment="Left" Margin="380,109,0,0" VerticalAlignment="Top" Foreground="#FF474747"/>
    <ComboBox x:Name="cmbViews" HorizontalAlignment="Left" Margin="380,124,0,0" VerticalAlignment="Top" Width="162" Text="Select ..." SelectionChanged="cmbView">
        <ComboBoxItem Content="Company" Foreground="#FFA2A2A2"/>
        <ComboBoxItem Content="Employee" Foreground="#FFA2A2A2"/>
    </ComboBox>

最佳答案

我怀疑您基本上将 WPF 应用程序设计为 WinForms 应用程序,在 UI 元素上设置了准确的 HeightWidth 值。这不是我们在 WPF 中布局 UI 元素的方式。如果您确实这样做了,那么将它们放入 DockPanel 中并不能解决您的问题是对的。

在WPF中,我们一般使用Grid元素来充分利用提供给它们的可用空间。将 Grid.ColumnDefinition.Width 设置为 Auto 并将另一个设置为 * 将填充*所有可用宽度:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" /> <!-- Just big enough for content -->
    <ColumnDefinition Width="*" />    <!-- Fills all remaining space -->
</Grid.ColumnDefinitions>
...
<TextBlock Grid.Column="1" Text="I'm in the right cell" />

这只是众多示例中的一个...请通读 Introduction to WPF Layout来自 WPF Tutorial.net 网站的页面以获取更多信息。

关于c# - 申请解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21455285/

相关文章:

java - 如何将 C# 日期时间转换为 Java 日期时间

c# - 如何将带有错误规范(无效用户名或无效密码)的 HttpResponseException 返回给前端?

c# - XAML 样式/基类中 VisualStateGroup/VisualState 的继承

WPF按钮无边框无背景

c# - Html.EditorFor 用于带逗号的小数字段

c# - 根据另一个查询的结果过滤一个 linq 查询

c# - 使用 Catel 将验证从模型传播到 View

c# - 在 Silverlight 中使用字符串作为数据表单的数据模板时的事件处理程序

wpf - 一个 View 可以有两个 View 模型作为它的数据上下文吗?

c# - 我可以在 Windows Phone 7 中导航到来自另一个 xaml 页面的数据透视项吗?