XAMLではなくコードによってフォームにテキストボックスを追加しようとしています。また、エラー検証を使用します。コード付きのエラーテンプレートを含むテキストボックス
SearchTextBox stb = new SearchTextBox()
{
Name = "stbRelatorio_" + id
};
// Create a new Binding.
Binding bindingStb = new Binding();
bindingStb.Source = model;
bindingStb.Path = new PropertyPath("ReportFile[" + id + "]");
stb.SetBinding(SearchTextBox.FileNameProprety, bindingStb);
BindingExpression bindingExpression =
BindingOperations.GetBindingExpression(stb, SearchTextBox.FileNameProprety);
BindingExpressionBase bindingExpressionBase =
BindingOperations.GetBindingExpressionBase(stb, SearchTextBox.FileNameProprety);
ValidationError validationError =
new ValidationError(new ExceptionValidationRule(), bindingExpression);
Validation.MarkInvalid(bindingExpressionBase, validationError);
ControlTemplate ct = this.Resources["validationErrorTemplate"] as ControlTemplate;
私はこれを行うと挿入されたテキストがありませんとき、私は(それは私のエラーの場合です)のデフォルトの動作を取得:私は、次のコードを持っています。テキストボックスの周囲の赤いボックス。私が今欲しいのは、カスタムAdornerレイアウトを使用することであると私はERRORTEMPLATEを設定しようとすると、私はXAML
<ControlTemplate x:Name="validationErrorTemplate" x:Key="validationErrorTemplate">
<DockPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
<Grid Width="12" Height="12">
<Ellipse Width="12" Height="12"
Fill="Red" HorizontalAlignment="Center"
VerticalAlignment="Center"></Ellipse>
<TextBlock Foreground="White" FontWeight="Heavy"
FontSize="8" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center"
ToolTip="{Binding ElementName=ErrorAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
X
</TextBlock>
</Grid>
<TextBlock Foreground="Red" FontWeight="12" Margin="2,0,0,2"
Text="{Binding ElementName=ErrorAdorner,
Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
</TextBlock>
</StackPanel>
<AdornedElementPlaceholder x:Name="ErrorAdorner" />
</DockPanel>
</ControlTemplate>
でそれを構築する。しかし:
Validation.SetErrorTemplate(stb, ct);
私はすべてのエラー検証を取得しない、ではありませんデフォルトのテンプレートでさえ。
何か不足していますか?
によって発見することができますが、 'Validation.SetErrorTemplate(STB、CT)にブレークポイントを設定すると、' 'ct'はct'がnull値または'を持っていますか? – ASh