1
我试图在WPF中获得具有某些特性的DataGrid,但我遇到了问题。 我已经制作了列,以便每列具有相同的宽度(宽度=“*”),并且它们填充整个可用空间。这很好,但现在有一个问题:当我试图通过点击一个空白点(基本上没有任何文本的地方)来选择一行(这是我需要做的),该行或单元格不会没有选择。DataGrid单元格(或行)选择仅在单击单元格的内容(文本)时起作用
让我后我的代码(忽略其工作完全绑定):
<DataGrid
ItemsSource="{Binding MyBinding}"
SelectedItem="{Binding Selected}"
AutoGenerateColumns="False"
IsReadOnly="True"
IsManipulationEnabled="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
GridLinesVisibility="Horizontal"
SelectionMode="Single"
SelectionUnit="FullRow"
RowHeaderWidth="0"
Height="Auto"
SelectedIndex="0"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Param1" Binding="{Binding Param1}" Width="*" />
<DataGridTextColumn Header="Param2" Binding="{Binding Param2}" Width="*"/>
...
<DataGridTextColumn Header="Paramx" Binding="{Binding Paramx}" Width="*"/>
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
http://i.stack.imgur.com/c9wyp.png
正如你所看到的选择只影响单元格的内容,而不是电池本身。我希望它能在任何地方工作。
非常感谢您的帮助!
编辑:它似乎工作,因为我设置HorizontalAlignment拉伸。不过,我仍然希望它居中。
EDIT2:通过这样做解决:
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.CellStyle>