如何从其模板字段wpf获取datagrid单元对象

时间:2013-04-01 03:36:16

标签: c# wpf validation datagrid datatemplate

以下是我使用的示例代码。我为名为TextBox的{​​{1}}创建了附加属性。每当填充ErrorMessageServce.ErrorMessage时,它都会调用ValidationError的属性更改事件。

从那里我想要的是,如果出现错误,我想强调该特定单元格。所以我想在ErrorMessageService做,但我得到了ErrorMessageServicePropertyChanged对象。

所以问题是:

1)如何从该文本框对象获取Datagridcell;

或:

2)如何突出特定细胞;

3)如何在编辑模式下显示特定单元格(即应显示文本框)

XAML:

TextBox

<DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Grid.Column="1" Width="150" Height="25"> </TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <TextBox Grid.Column="1" Style="{DynamicResource ValidatingTextBox}" x:Name="NameText" Text="{Binding CompanyName,ValidatesOnDataErrors=True,ValidatesOnExceptions=True}" App:ErrorMessageService.ErrorMessage="{Binding ValidationResult,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="150" Height="25"> </TextBox> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn>

ErrorMessageService

感谢。

1 个答案:

答案 0 :(得分:1)

我已经尝试了下面的方法,它可以很好地从单元格编辑模板中的文本框中获取Datagridcell对象。我想这也可能对某些人有所帮助

  public static T FindAncestor<T>(DependencyObject dependencyObject)
        where T : class
     {
        DependencyObject target = dependencyObject;
        do
        {
            target = VisualTreeHelper.GetParent(target);
        }
        while (target != null && !(target is T));
        return target as T;
       }

获取DatagridCellobject后,它具有像IsEdit这样的属性,使得该单元格可编辑

谢谢