以下是我使用的示例代码。我为名为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
感谢。
答案 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这样的属性,使得该单元格可编辑
谢谢