我有一个绑定到Observable Collection的DataGrid
的WPF项目。
使用异步方法填充此集合,当我调用此异步方法时,向用户显示带有进度环的动画。
当集合正在等待数据时,一切都可以正常工作,但当DataGrid
填充项目时,进度环动画将停止工作1秒或2,直到DataGrid
加载所有记录(此集合可能有50,000条记录或更多)。我只是想知道当DataGrid
使用从集合返回的信息填充自己时是否有办法不锁定动画。
设置是: 我有一个带有隐藏用户控件的主窗口,它使用名为IsLoading的属性显示/隐藏动画。当此用户控件可见时,它会锁定其后面的所有用户对象。
守则
<Grid>
<local:LoadingOverlayView
DataContext="{Binding Assets}"
d:IsHidden ="True"
Visibility="{Binding IsLoading,
Converter={StaticResource BoolToVisibilityConverter},
UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
答案 0 :(得分:0)
实现动画进度环,条等的最佳方法是使用辅助线程。稍后使用ui线程同步其他线程使用Dispatcher.Invoke()方法。
答案 1 :(得分:0)
这意味着关闭数据网格的虚拟化。它为所有行创建了所有UI元素。这可能有不同的原因。很可能是因为您将数据网格放在滚动面板中。通过这样做,它不知道它的高度,并且无法确定它为创建UI元素所需的最小行集。
这是好读:https://msdn.microsoft.com/en-us/library/cc716879(v=vs.110).aspx但它可能变得相当复杂