我试图按要求启动我的组合框的验证....类似的代码适用于文本框,但看起来像组合框完全不同(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没有启动我的验证?
由于
米歇尔
答案 0 :(得分:1)
这对我来说很好用:
var expression = someCombo.GetBindingExpression(Selector.SelectedItemProperty);
if (expression != null)
expression.UpdateSource();