这是我一直跳过并留到最后的东西,因为我似乎找不到答案,而且我已经找了很长时间。
我在 Window 中有一个应用程序,我已将应用程序构建到我的屏幕分辨率为 1600 x 900。如果我在分辨率为 1024 x 768 的屏幕上运行该应用程序,我的整个界面将不会缩小.
示例。
现在我知道你们中的很多人会考虑添加 Dockpanels 等......但我已经尝试过这样做。当您更改分辨率时,它不起作用,它只会将对象固定到一个位置。
我想要发生的事情。
如果你们中有人知道这个恼人问题的解决方案,请告诉我。
我对分辨率了解不多,只知道我已经做了几个小时的研究。
编辑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 元素上设置了准确的 Height
和 Width
值。这不是我们在 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/