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>