我想在后面的代码中创建数据网格,并将其添加到其他区域(例如,每个 tabitem 都有一个数据网格)。然而,每次我不断地让列宽的长度变得非常小,很难读取数据网格中的数据。我查看了我拥有的其他 Datagrid 表并复制了 XAML 中的相同步骤,但不起作用。甚至,我牺牲了使用背后的代码,只是在 XAML 中添加了数据网格,并使用了相同的设置,相同的结果。
我的 XAML 遵循用户控件:
<UserControl>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<DockPanel Background="#A0A1A2" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" LastChildFill="False">
...........
<TabControl>
(tabitem will be generated through loop with adding datagrids into the tabitem in code behind)
</TabControl>
</DockPanel>
</ScrollViewer>
</UserControl>
背后代码:
dt_grid1 = new DataGrid();
dt_grid2 = new DataGrid();
InitializeComponent();
// Setting up the Datagrids:
Dispatcher.Invoke(() =>
{
// Datagrid1:
dt_grid1.CanUserAddRows = false;
dt_grid1.CanUserDeleteRows = false;
dt_grid1.CanUserReorderColumns = false;
dt_grid1.CanUserResizeColumns = false;
dt_grid1.CanUserResizeRows = false;
dt_grid1.CanUserSortColumns = false;
dt_grid1.AutoGenerateColumns = false;
dt_grid1.IsReadOnly = true;
dt_grid1.Margin = new Thickness(5);
dt_grid1.VerticalAlignment = VerticalAlignment.Stretch;
dt_grid1.HorizontalAlignment = HorizontalAlignment.Stretch;
dt_grid1.SelectionMode = DataGridSelectionMode.Extended;
//dt_grid1.ColumnWidth = new DataGridLength(50, DataGridLengthUnitType.Star);
// Datagrid2:
dt_grid2.CanUserAddRows = false;
dt_grid2.CanUserDeleteRows = false;
dt_grid2.CanUserReorderColumns = false;
dt_grid2.CanUserResizeColumns = false;
dt_grid2.CanUserResizeRows = false;
dt_grid2.CanUserSortColumns = false;
dt_grid2.AutoGenerateColumns = false;
dt_grid2.IsReadOnly = true;
dt_grid2.Margin = new Thickness(5);
dt_grid2.VerticalAlignment = VerticalAlignment.Stretch;
dt_grid2.HorizontalAlignment = HorizontalAlignment.Stretch;
dt_grid2.SelectionMode = DataGridSelectionMode.Extended;
//dt_grid2.ColumnWidth = new DataGridLength(50, DataGridLengthUnitType.Star);
});
我遇到的 Datagrid 问题是这样的:
您可以设置datagrid本身(而不是Dockpanel)属性ColumnWidth =“*”,这将使所有列的大小相同