2012-05-15 68 views
3

我在ItemTemplate中有一些listView和userControl。此UserControl包含一些我需要验证的文本框。一切正常,直到我启用ListView的虚拟化。现在验证仅适用于可见项目。如何验证虚拟化的listview?

我该如何解决这个问题?

回答

1

由于UI虚拟化回收可视容器,它将重置它们,因此解决方案将手动绑定到用户控件中的某些属性,并在View Model中进行验证。然后,当它未通过验证时,将UserControl的边框颜色和大小更改为红色和较粗的边框。

<UserControl...> 
    <Grid> 
    <Border BorderThickness="{Binding Path=Border_Thickness_property}" BorderBrush="{Binding Path=Border_brush_color}"> 

    <!-- Put your textboxes and such here... --> 

    </Border> 
    </Grid> 
</UserControl> 

参考:http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization

OR

你可以有你的视图模型实现IDataErrorInfo的,并使用该接口来定义的验证规则

This网站有一个很好的例子。