gpt4 book ai didi

wpf - 控件模板中的 ValidationRules

转载 作者:行者123 更新时间:2023-12-04 19:17:43 24 4
gpt4 key购买 nike

我有从文本框继承的控制权

public class MyTextBox : TextBox

这个有风格
<Style TargetType="{x:Type Controls:MyTextBox}">

二传手之一是
<Setter Property="Template">

我希望能够设置 Binding.ValidationRules模板中的某些内容,从而影响此类文本框的所有实例。
因此,我可以为时间、日期、数字、邮政/邮政编码或任何我想要的东西制作文本框,

我不想每次创建文本框时都必须设置验证规则。我只想说我想要一个 NumericTextBox并以模板中设置的任何方式对其进行验证。

这可能吗?

到目前为止,我所看到的是在控件的每个实例上设置的 ValidationRules,例如
<TextBox x:Name="txtEMail" Template={StaticResource TextBoxErrorTemplate}>
<TextBox.Text>
<Binding Path="EMail" UpdateSourceTrigger="PropertyChanged" >
<Binding.ValidationRules>
<local:RegexValidationRule Pattern="{StaticResource emailRegex}"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>

(来自 http://www.wpftutorial.net/DataValidation.html)

最佳答案

如您所见,验证规则与绑定(bind)一起设置。我遇到了同样的问题,对我来说可行的解决方案是做这样的事情:

    public MyTextBox()
{
this.Loaded += new RoutedEventHandler(MyTextBox_Loaded);
}

void MyTextBox_Loaded(object sender, RoutedEventArgs e)
{
var binding = BindingOperations.GetBinding(this, TextBox.ValueProperty);
binding.ValidationRules.Add(new MyValidationRule());
}

这里的问题是确保在我们添加验证规则之前设置绑定(bind),因此使用加载,但我不确定这是否适用于所有场景。

关于wpf - 控件模板中的 ValidationRules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7306371/

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