我的WPF表单中有一个包含多个列的数据网格。打开表单并将列添加到数据网格时,表单会自动调整为屏幕宽度。
现在我知道发生这种情况是因为我在我的代码中将datagrid对齐设置为stretch并将列宽设置为*。但是需要设置这些,因为我希望datagrid改变它的大小,并在用户调整窗口大小时(而不是在打开窗口时)填充数据网格宽度。
表单本身就在这里:
<UserControl
/*...*/
d:DesignHeight="590" d:DesignWidth="896">
<Grid x:Name="Form" Loaded="Form_Loaded" MinWidth="896" MinHeight="590">
<Label x:Name="label" Content="Label" HorizontalAlignment="Left" Margin="10,8,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.479,0.577" Height="27"/>
<ComboBox x:Name="combo" HorizontalAlignment="Left" Margin="68,10,0,0" VerticalAlignment="Top" Width="200" SelectionChanged="combo_SelectionChanged" Height="23"/>
<Button x:Name="buttonOne" Content="Button" HorizontalAlignment="Right" Margin="0,10,10,0" VerticalAlignment="Top" Width="75" Height="23"/>
<TextBox x:Name="box" HorizontalAlignment="Right" Height="23" Margin="0,10,95,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="200"/>
<DataGrid x:Name="view" HorizontalAlignment="Stretch" Margin="10,43" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" CanUserReorderColumns="False" SelectionMode="Single" IsReadOnly="True" ItemsSource="{Binding Path=List}">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="*" Binding="{Binding Path=Name}" Visibility="Visible"/>
/*...*/
</DataGrid.Columns>
</DataGrid>
<Button x:Name="buttonTwo" Content="Button" HorizontalAlignment="Right" Margin="0,0,10,10" DockPanel.Dock="Right" Width="75" Height="23" Click="buttonTwo_Click" VerticalAlignment="Bottom"/>
</Grid>
</UserControl>
它的创建就在这里:
System.Windows.Window window = new System.Windows.Window();
Form form = new Form();
window.Content = form;
window.ResizeMode = System.Windows.ResizeMode.CanResizeWithGrip;
window.MinWidth = 916;
window.MinHeight = 633;
window.Title = "Form";
window.SizeToContent = System.Windows.SizeToContent.WidthAndHeight;
Uri iconUri = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Image\\image.ico", UriKind.RelativeOrAbsolute);
window.Icon = BitmapFrame.Create(iconUri);
window.ShowDialog();
我尝试将datagrid放在一个具有固定宽度和高度的单独面板中。我在添加列后也更改了窗口大小,但这些解决方案都没有按计划运行。
当打开窗口并添加列时,如何避免调整数据网格和窗口的大小(以便以后可以调整大小)?
答案 0 :(得分:0)
要解决此问题,必须在创建时使用以下代码行设置窗口大小:
window.Width = 916;
window.Height = 633;
还必须删除以下代码行,因为它在设置初始大小后调整窗口大小:
window.SizeToContent = System.Windows.SizeToContent.WidthAndHeight;
感谢E Mett带领我找到解决方案。