我正在使用Wpf应用程序。我为wpf DataGrid
创建了一个自定义样式(在Wpf Toolkit中提供)。一切正常,但我无法对Style
中双击单元格(可编辑模式)时出现的TextBox
应用DataGridTextColumn
。它显示为默认样式,与我的样式不匹配,看起来很奇怪。我在ComboBox
DataGridComboBoxColumn
和CheckBox
以及所有其他控件中应用了一种样式,但这个样式无效。任何帮助PLZ !!!
我有一个控制库,这里会覆盖每个控件以进行自定义(附加功能)和重新设置。这些控件在整个应用程序中使用。我必须在控件库中的控件上应用此样式。这样我就可以在整个应用程序中反映出来。
答案 0 :(得分:5)
不完美,但有效......
<Style x:Key="DataGridTextBoxStyle"
TargetType="TextBox">
<Setter
Property="SelectionBrush"
Value="#FFF8D172" />
<Setter
Property="Padding"
Value="0" />
<Setter
Property="VerticalContentAlignment"
Value="Center" />
<Setter
Property="FontSize"
Value="9pt" />
<Setter
Property="SelectionOpacity"
Value="0.6" />
</Style>
<DataGridTextColumn
x:Name="TextColumn"
Header="Header"
EditingElementStyle="{StaticResource ResourceKey=DataGridTextBoxStyle}"/>
答案 1 :(得分:0)
如果您不想覆盖系统PreparingCellForEdit
,或者使用DataGrid
,也可以通过EditingElementStyle
的{{1}}事件来实现,或者当您有多个列并且无法单独设置它们时。
AutoGenerateColumns
如果您想应用应用资源:
private void DataGrid_PreparingCellForEdit(object sender,
DataGridPreparingCellForEditEventArgs e)
{
if (!(e.Column is DataGridTextColumn && e.EditingElement is TextBox textBox))
return;
var style = new Style(typeof(TextBox), textBox.Style);
style.Setters.Add(new Setter { Property = ForegroundProperty, Value = Brushes.Red });
textBox.Style = style;
}