我想通过检查 ItemsSource 是否包含空集合来验证 ListView。这是 XAML。
<ListView x:Name="lstvItemsInGroup"
<ListView.ItemsSource>
<Binding Path="ItemsInGroup" Mode="OneWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:CollectionNotEmptyValidationRule ErrorMessage="You must select at least one item" />
</Binding.ValidationRules>
</Binding>
</ListView.ItemsSource>
</ListView>
这是 ValidationRule。
public class CollectionNotEmptyValidationRule : ValidationRule
{
public string ErrorMessage
{ get; set; }
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
ValidationResult lResult = null;
IEnumerable<object> lCollection = (IEnumerable<object>)value;
if (lCollection == null || lCollection.Count() == 0)
{
lResult = new ValidationResult(false, ErrorMessage);
}
else
{
lResult = new ValidationResult(true, null);
}
return lResult;
}
我在加载用户控件时强制验证
lstvItemsInGroup.GetBindingExpression(ListView.ItemsSourceProperty).UpdateSource();
但是甚至没有调用 ValidationRule,我在第一行有一个断点,什么也没有。
有什么线索吗?
谢谢。
最佳答案
在这里http://msdn.microsoft.com/en-us/library/system.windows.data.bindingexpression.updatesource.aspx据说 UpdateSource
方法仅在绑定(bind)处于 TwoWay
或 OneWayToSource
模式时更新源。因此,尝试在您的绑定(bind)上设置 Mode=TwoWay
。
关于c# - 将验证规则应用于 ListView 的 ItemsSource 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728398/