我在 ItemTemplate 中有一些带有 userControl 的 listView。此 UserControl 包含一些我需要验证的文本框。在我为 ListView 启用虚拟化之前,一切正常。现在验证仅适用于可见项目。
我该如何解决这个问题?
最佳答案
因为 UI 虚拟化回收了可视化容器,它会重置它们,所以解决方案是手动绑定(bind)到用户控件中的一些属性,并在 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
或者
您可以让您的 View 模型实现 IDataErrorInfo 并使用该接口(interface)来定义您的验证规则
This网站有一个很好的例子。
关于wpf - 如何验证虚拟化 ListView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10598144/