禁用DataGrid会在添加

时间:2015-12-28 13:25:38

标签: c# wpf datagrid

我的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放在一个具有固定宽度和高度的单独面板中。我在添加列后也更改了窗口大小,但这些解决方案都没有按计划运行。

当打开窗口并添加列时,如何避免调整数据网格和窗口的大小(以便以后可以调整大小)?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

感谢E Mett带领我找到解决方案。