尝试在C#中使用Datagrids时遇到一个奇怪的问题。我的数据网格附加了一个额外的列,看起来并不整洁。
我按照我总是做DataGrid in WPF的教程。我还下载了示例并执行了它们,但正如我在此示例中看到的那样,还附加了一个额外的列。 (图2和图7)
为什么会这样?我可以摆脱这个多余的列吗?
左侧小组:
<DockPanel >
<TextBox DockPanel.Dock="Top" Text="Unsecured Devices" IsReadOnly="True"/>
<DataGrid x:Name="unSecure" ItemsSource="{Binding UnsecuredDevices}"/>
</DockPanel>
右小组:
<DockPanel Grid.Column="2">
<TextBox DockPanel.Dock="Top" Text="Secured Devices" IsReadOnly="True" />
<DataGrid x:Name="Secure" ItemsSource="{Binding SecuredDevices}" />
</DockPanel>
答案 0 :(得分:2)
set ColumnWidth ="*"
Space是datagrid的未使用空间。您需要设置列宽以填充空间。
<DockPanel >
<TextBox DockPanel.Dock="Top" Text="Unsecured Devices" IsReadOnly="True"/>
<DataGrid ColumnWidth ="*" x:Name="unSecure" ItemsSource="{Binding UnsecuredDevices}"/>
</DockPanel>
答案 1 :(得分:2)
它不是一个空列,只留下空白空间,您可以通过在DataGrids上设置ColumnWidth
来解决此问题
自动度量单位取决于单元格的大小和列标题。
像素度量单位以像素表示。
SizeToCells 度量单位取决于单元格的大小。
SizeToHeader 度量单位取决于列标题的大小。
星级度量单位是可用空间的加权比例。
我认为Star(*)适用于您的布局<DataGrid ColumnWidth="*">
答案 2 :(得分:1)
如你所说,教程本身有一个额外的专栏。您可以调整高度和宽度,只是为了节省一天。如:
<DataGrid x:Name="Secure" ItemsSource="{Binding SecuredDevices}"
Height="200" Width="500" HorizontalAlignment="Left" Margin="12,21,0,0"
VerticalAlignment="Top" RowHeight="30" ColumnWidth="100" />