【发布时间】:2015-06-02 07:30:24
【问题描述】:
我正在尝试创建一个响应式应用程序,我所做的所有努力都没有在新标准 WPF 上给我带来结果。 当表单缩小或展开时,我会确保调整应用程序控件的大小。 正如您从图片中看到的那样,当表单缩小时,项目 3 并不完全可见,因此不适合用户给出的新尺寸。 如何创建可以自动调整控件的应用程序?在正常形式上,我这样做没有问题,但在 WPF 中并不真正了解如何自动适应,尽管阅读了许多教程。谢谢。
代码:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="SpanCore.MainWindow"
Title="SpanCore" Height="522" Width="783" MinWidth="400" MinHeight="522">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition />
<RowDefinition />SpanCoreSpanCore
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3">
<Menu Height="21" VerticalAlignment="Top" HorizontalContentAlignment="Stretch" Background="#FFF0EDED" Grid.ColumnSpan="3">
<MenuItem ToolTip="File" Header="File">
</MenuItem>
</Menu>
<DataGrid HorizontalContentAlignment="Stretch" VerticalAlignment="Top" Grid.ColumnSpan="3" Margin="10,26,10,0" Grid.RowSpan="2">
<DataGrid.Columns>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="h" CanUserResize="False" MinWidth="100" Width="150"/>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="a" CanUserResize="False" MinWidth="100" Width="150"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
<TabControl Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Width="auto" Height="auto">
<TabItem Header="tab1">
<Canvas>
<DockPanel>
<GroupBox Header="item1" Grid.Row="2" Grid.Column="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Height="168" Width="300">
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="S"/>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="P"/>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="V"/>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="P"/>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Pa"/>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="G"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<GroupBox Header="item2" Canvas.Left="303" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Height="168" >
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Book" MinWidth="80"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<DockPanel DockPanel.Dock="Right" HorizontalAlignment="Right">
<GroupBox Header="item3" Canvas.Left="903" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Width="202" Height="168" DockPanel.Dock="Right" >
<Grid>
<RadioButton Content="1t" HorizontalAlignment="left" DockPanel.Dock="left"/>
<RadioButton Content="2t" HorizontalAlignment="Right" DockPanel.Dock="Right"/>
</Grid>
</GroupBox>
</DockPanel>
</DockPanel>
</Canvas>
</TabItem>
<TabItem Header="tab2">
</TabItem>
</TabControl>
</Grid>
图片示例:
【问题讨论】:
-
不要使用
Canvas,因为它是WPF,而不是Windows Forms。 -
好的,我已经删除了 Canvas 组件。现在的问题是当窗体调整大小时 item1 和 item2 仍然锚定在左侧,这很好,但我希望这个控件在我展开窗口时必须放大它们的尺寸。