下面是我正在使用的示例代码。我已经为TextBox
被调用创建了附加属性ErrorMessageServce.ErrorMessage
。每当ValidationError
填充 时,它都会调用 的属性更改事件ErrorMessageService
。
从那里我想要的是,如果出现错误,我想突出显示该特定单元格。所以我想去做ErrorMessageServicePropertyChanged
,但在那里我得到了TextBox
反对。
所以问题是:
1) 如何从该文本框对象中获取 Datagridcell;
或者:
2)如何突出显示该特定单元格;
3)如何在编辑模式下显示特定的单元格(即应该显示文本框)
XAML:
<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
public static class ErrorMessageService
{
public static readonly DependencyProperty ValidationErrorProperty =
DependencyProperty.RegisterAttached("ErrorMessage", typeof(ValidationResult), typeof(ErrorMessageService),
new FrameworkPropertyMetadata(default(ValidationResult), ErrorMessageServicePropertyChanged));
public static ValidationResult GetErrorMessage(Control control)
{
return (ValidationResult)control.GetValue(ValidationErrorProperty);
}
public static void SetErrorMessage(Control control, object value)
{
control.SetValue(ValidationErrorProperty, value);
}
private static void ErrorMessageServicePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
//here i am getting d as textbox , from this how to get datagridcell object , so that i can highlight
}
}
谢谢。