WPF エラー テンプレートを WPF の UserControl 内のコントロールに表示するにはどうすればよいですか?
2 つのラベル、2 つの TextBoxes、および CheckBox を含む UserControl があります。TextBoxes の 1 つはエンティティの名前を表し、ViewModel によって公開される Model プロパティの Name プロパティにバインドされます。これは、私の Window の DataContext です。Model クラスは IDataErrorInfo インターフェイスを実装しており、単体テストを通じて、Name が空白の場合、プロパティ インデクサーの実装によってエラーが返されることを確認しました。UserControl の Name TextBox をサポートする Dependency Property にバインドしました。検証エラーが発生すると、WPF エラー テンプレートは、Name TextBox だけでなく、UserControl 全体に赤い境界線を配置します。
UserControl の name フィールドへのバインドは次のとおりです。
<vc:MyUserControl ItemName="{Binding Model.Name, ValidatesOnDataErrors=True}" />
私の UserControl とバッキング DependencyProperty の単純化されたバージョンは次のとおりです。
<UserControl>
<Grid>
<TextBox Text="{Binding ItemName}" />
</Grid>
</UserControl>
public partial class MyUserControl: UserControl
{
public static readonly DependencyProperty ItemNameProperty =
DependencyProperty.Register(
"ItemName",
typeof(string),
typeof(MyUserControl),
new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)
);
public string ItemName
{
get { return (string)GetValue(ItemNameProperty); }
set { SetValue(ItemNameProperty, value); }
}
}
これまでにこの問題に関連して見つけた情報はすべて、Silverlight に関するものか、コンバーターを使用して赤い境界線を表示しないことに関するものでした (これは私には意味がありませんでした)。この情報はすべて、stackoverflow で見つかりました。
WPFでこの問題を解決できた人はいますか? 私は明らかな何かを見落としていますか?