以下は、私が使用しているサンプルコードです。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
}
}
ありがとう。