如何重新设置DataGridTextColumn的TextBox?

时间:2011-02-03 14:01:54

标签: c# wpf xaml styles datagridtextcolumn

我正在使用Wpf应用程序。我为wpf DataGrid创建了一个自定义样式(在Wpf Toolkit中提供)。一切正常,但我无法对Style中双击单元格(可编辑模式)时出现的TextBox应用DataGridTextColumn。它显示为默认样式,与我的样式不匹配,看起来很奇怪。我在ComboBox DataGridComboBoxColumnCheckBox以及所有其他控件中应用了一种样式,但这个样式无效。任何帮助PLZ !!!

编辑:

我有一个控制库,这里会覆盖每个控件以进行自定义(附加功能)和重新设置。这些控件在整个应用程序中使用。我必须在控件库中的控件上应用此样式。这样我就可以在整个应用程序中反映出来。

2 个答案:

答案 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;      
}