1

我正在尝试根据需要启动我的组合框的验证......类似的代码非常适用于文本框,但看起来组合框的行为完全不同(文本或 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 没有启动我的验证?

谢谢

米歇尔

4

1 回答 1

1

这对我来说很好:

var expression = someCombo.GetBindingExpression(Selector.SelectedItemProperty);
if (expression != null)
    expression.UpdateSource();
于 2014-10-27T15:10:24.847 回答