Я использую WPF4.0 DataGrid. При двойном щелчке по ячейке в новой строке все хорошо работает, если я не добавил стиль ячеек к тому столбцу. Например, у меня есть числовой столбец, где я хочу данные, выровненные по правому краю, таким образом, xaml похож на это
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
CellStyle="{StaticResource CellRightAlign}">
<DataGridTextColumn.Header>
<TextBlock Style="{StaticResource DataGridHeader}">Impa</TextBlock>
</DataGridTextColumn.Header>
</DataGridTextColumn>
Где стиль в совместно используемом ресурсе справедлив:
<Style x:Key="CellRightAlign">
<Setter Property="Control.HorizontalAlignment"
Value="Right" />
</Style>
Получающуюся выбираемую область на новой строке показывают в изображении как та маленькая синяя область. Это - очень небольшая цель для пользователя для удара, и это, оказывается, наиболее вероятный столбец, с которого они захотят запуститься на новой строке.
Если я удаляю CellStyle, работы области, как желаемый, но конечно я теряю выравнивание по правому краю.
Кто-либо знает, как достигнуть обоих?
Вещи я попробовал
Вещь, которая работала:
Используя информацию из ответа @AngelWPF я смог измениться от использования CellStyle к использованию ElementStyle следующим образом:
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
CellStyle="{StaticResource CellRightAlign}">
Стал
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
ElementStyle="{StaticResource CellRightAlign}">
Я имел ту же проблему и решил ее теперь. Если Вы хотите сделать это в коде c#, необходимо установить набор методов set:
DataGridTextColumn numColumn = new DataGridTextColumn
Style s = new Style();
s.Setters.Add(new Setter(HorizontalAlignmentProperty, HorizontalAlignment.Stretch));
s.Setters.Add(new Setter(HorizontalContentAlignmentProperty, HorizontalAlignment.Right));
s.Setters.Add(new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Stretch));
s.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right));
numColumn.CellStyle = s;