So *_*ins 4 .net c# data-binding validation wpf
我想通过检查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>
Run Code Online (Sandbox Code Playgroud)
这是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;
}
Run Code Online (Sandbox Code Playgroud)
我在加载用户控件时强制验证
lstvItemsInGroup.GetBindingExpression(ListView.ItemsSourceProperty).UpdateSource();
Run Code Online (Sandbox Code Playgroud)
但是甚至没有调用ValidationRule,我在第一行有一个断点,什么也没有。
有什么线索吗?
谢谢。
在这里http://msdn.microsoft.com/zh-cn/library/system.windows.data.bindingexpression.updatesource.aspx,据说该UpdateSource方法仅在绑定处于TwoWay或OneWayToSource模式下时才更新源。因此,请尝试设置Mode=TwoWay绑定。
| 归档时间: |
|
| 查看次数: |
3447 次 |
| 最近记录: |