gpt4 book ai didi

c# - 通过 Window 的 ViewModel 验证 UserControl 的控件

转载 作者:行者123 更新时间:2023-12-03 10:43:20 27 4
gpt4 key购买 nike

假设,我创建了自定义 登录表格 作为 UserControl ,由 TextBox 组成和 PasswordBox . TextBox已安装自定义ErrorTemplate .当然,我希望这个 LoginForm 为 可重复使用 可以,因此我想将验证逻辑与此 LoginForm 分开。

问题是,如果我 绑定(bind) LoginForm 的文本属性到 的“验证属性” View 模型:IDataErrorInfo ,即设置为 WindowDataContext , ErrorTemplate未应用于 LoginForm 的 TextBox即使我从 ViewModel 的验证器中看到调试日志。

如何通过独立的 ViewModel 验证可重用组件的子控件?

最佳答案

在应用程序资源中使用此错误模板:

<Style TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<Border BorderBrush="Red" BorderThickness="0.8">
<AdornedElementPlaceholder Name="adornerPlaceholder"></AdornedElementPlaceholder>
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>

关于c# - 通过 Window 的 ViewModel 验证 UserControl 的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41446460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com