【问题标题】:Disable DataGrid resize on column adding在添加列时禁用 DataGrid 调整大小
【发布时间】:2016-04-02 08:30:53
【问题描述】:

我的 WPF 表单中有一个包含多列的数据网格。打开表单并将列添加到数据网格时,表单会自动调整大小以适应屏幕的宽度。

现在我知道发生这种情况是因为我在代码中将数据网格对齐设置为拉伸,将列宽设置为 *。但是这些需要设置,因为我希望数据网格在用户调整窗口大小时(而不是在打开窗口时)改变它的大小和填充数据网格宽度的列。

表格本身在这里:

<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 正在调整大小,因为您将其设置为拉伸。你想发生什么?
  • 我希望数据网格在添加列时不要拉伸。但是当用户调整窗口本身的大小时,我希望它与列一起拉伸。窗口打开时应小于屏幕的整个宽度。

标签: c# wpf datagrid


【解决方案1】:

要解决此问题,必须在创建时使用以下代码行设置窗口的大小:

window.Width = 916;
window.Height = 633;

还必须删除以下代码行,因为它会在设置初始大小后调整窗口大小:

window.SizeToContent = System.Windows.SizeToContent.WidthAndHeight;

感谢 E Mett 引导我找到解决方案。

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 2011-11-20
    • 1970-01-01
    • 2011-10-20
    • 2011-05-23
    • 2014-05-31
    • 1970-01-01
    • 2011-12-31
    • 2011-04-21
    相关资源
    最近更新 更多