如何让 WPF 错误模板出现在 WPF 中的 UserControl 内的控件上?
我有一个包含两个标签、两个文本框和一个复选框的用户控件。其中一个文本框代表实体的名称,它绑定到我的 ViewModel 公开的 Model 属性的 Name 属性,这是我的 Window 的 DataContext。Model 类实现了 IDataErrorInfo 接口,我已经通过单元测试确认,当 Name 为空时,会通过属性索引器实现返回错误。我已绑定到在我的用户控件中支持名称文本框的依赖属性,当遇到验证错误时,WPF 错误模板会在整个用户控件周围放置一个红色边框,而不仅仅是名称文本框。
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 解决这个问题?我是否忽略了一些明显的东西?