提问人:Marcel L 提问时间:3/8/2023 最后编辑:Marcel L 更新时间:3/9/2023 访问量:83
WPF - 如何将基础控件的验证模板用于用户控件
wpf - how to use an underlying control's validation template for an user control
问:
我有一个由文本块和文本框组成的用户控件,如果我通过 INotifyDataErrorInfo 验证基础数据,整个控件将获得一个红色边框: 它的外观
我想使用文本框来显示我的用户控件数据中的错误,就好像我使用了文本框而不是我的控件一样。就我而言,我使用的是 wpf 材料设计,所以它看起来像这样。
我的控件 xaml:
<UserControl ....>
<Grid Height="40" Width="380" Margin="0,1,0,1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="110"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding ElementName=LabelWithInputUC,Path=Label}" Grid.Column="0" Margin="0,4,0,0" VerticalAlignment="Bottom"/>
<TextBox VerticalAlignment="Bottom"
Margin="10,0,30,0" Grid.Column="1"
x:Name="ContentTextBox"
MaxLength="{Binding ElementName=LabelWithInputUC,Path=MaxLength}"
IsReadOnly="{Binding ElementName=LabelWithInputUC,Path=IsReadOnly}"
Text="{Binding ElementName=LabelWithInputUC,Path=Text,UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</UserControl>
Label、MaxLength、IsReadOnly 和 Text 是我的用户控件中的依赖项属性。 使用我的控件的窗口将 text 属性绑定到视图模型中的属性,并在那里使用 INotifyDataErrorInfo 进行验证。
如果我尝试将文本框设置为控件 ValidationAdornerSite,我不会再看到任何验证错误。如何将内部文本框的错误模板用于用户控件?
更新
我创建了一个最小的示例来说明问题。
答: 暂无答案
评论
Validation.Error
{StaticResource MaterialDesignValidationErrorTemplate}
Validation.MarkInvalid
Text