Wpf 如果组合框已折叠,则停止验证规则
我有两个组合框-cbo_客户_支付方法和cbo_条款 其中一个cbo_客户_支付_方法项目(账户)要求cbo_条款(30天等)可见,否则其崩溃,我已在cbo_支付_类型_选择更改事件中设置此功能Wpf 如果组合框已折叠,则停止验证规则,wpf,validation,Wpf,Validation,我有两个组合框-cbo_客户_支付方法和cbo_条款 其中一个cbo_客户_支付_方法项目(账户)要求cbo_条款(30天等)可见,否则其崩溃,我已在cbo_支付_类型_选择更改事件中设置此功能 我已经实现了一个validationRule,用于测试cbo是否不为null&&if selectedValue如果组合框可见,则可以应用仅绑定值的样式: <ComboBox.Style> <Style TargetType="{x:Type ComboBox}">
我已经实现了一个validationRule,用于测试cbo是否不为null&&if selectedValue如果组合框可见,则可以应用仅绑定值的样式:
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Setter Property="SelectedValue">
<Setter.Value>
<Binding Path="terms_id" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True">
<Binding.ValidationRules>
<local:ValidCbo ErrorMessage="Select Payment Terms" />
</Binding.ValidationRules>
</Binding>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
您不能在组合框中设置SelectedValue,否则它会覆盖样式。谢谢H.B。这正是我想要的:-)顺便说一句,我可以看到您编辑了我的问题并删除了愚蠢的选项卡,我想这样做,但我不知道怎么做,有什么提示吗??thanksVisualStudio:Ctrl+E,D->Autoformat | Alt+单击+拖动鼠标->代码块选择我正试图在StackOverflow上执行此操作!为胜利干杯help@VasilijeBursac:您可以在控件折叠时触发验证,或者手动删除错误。这里有可能有用的方法。我无法给出更具体的建议,因为我以前从未遇到过这个问题(而现在我很少使用WPF)。@VasilijeBursac:我不知道如何触发验证,也许你可以在某处找到答案。如前所述,我将尝试查看
Validation.clearvalid
方法,该方法将删除错误。
public class ValidCbo : ValidationRule
{
private string _errorMessage;
public string ErrorMessage
{
get { return _errorMessage; }
set { _errorMessage = value; }
}
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
//if (this.ErrorMessage.Contains("Master") |)
if (value == null )
{
// value = null
return new ValidationResult(false, this.ErrorMessage);
}
else
{
// Not null
int selectedValue = (int)value;
if (selectedValue < 0)
{
return new ValidationResult(false, this.ErrorMessage);
}
else
{
return ValidationResult.ValidResult;
}
}
}
}
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Setter Property="SelectedValue">
<Setter.Value>
<Binding Path="terms_id" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True">
<Binding.ValidationRules>
<local:ValidCbo ErrorMessage="Select Payment Terms" />
</Binding.ValidationRules>
</Binding>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>