WPF组合框验证规则

时间:2014-10-27 14:32:05

标签: wpf combobox validationrules

我试图按要求启动我的组合框的验证....类似的代码适用于文本框,但看起来像组合框完全不同(Text或selectedItem绑定):

<ComboBox x:Name="someCombo" ItemsSource="{Binding items}">
    <ComboBox.SelectedItem>
        <Binding Path="Model.SomeItem" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <validation:SomeValidationRule ValidatesOnTargetUpdated="False">
                </validation:SomeValidationRule >
            </Binding.ValidationRules>
        </Binding>
    </ComboBox.SelectedItem>
</ComboBox>

public class SomeValidationRule : ValidationRule
{

    public override ValidationResult Validate(object value,
        System.Globalization.CultureInfo cultureInfo)
    {

        var userText = value as string;
        return String.IsNullOrWhiteSpace(userText)?
            new ValidationResult(false, "empty combobox error..") :
            new ValidationResult(true, null);
    }
}

对于文本框我可以通过使用MyTextBox.UpdateSource在我想要的时候启动验证,但我无法通过组合框找到任何方法。

我需要在特定情况下仅按需启动验证。

所以我的问题是为什么someCombo.UpdateSource没有启动我的验证?

由于

米歇尔

1 个答案:

答案 0 :(得分:1)

这对我来说很好用:

var expression = someCombo.GetBindingExpression(Selector.SelectedItemProperty);
if (expression != null)
    expression.UpdateSource();