我编写了一个日期控件,用于显示按月排列的变量范围的天数。这些日子旨在显示上午、下午或全天的两个字母代码,并且可能将其背景设置为特定颜色,例如:
为了使天数均匀分布并匹配天数列,我使用了 Stackpanel 中包含的 UniformGrid:
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal">
<ItemsControl Name="cal" ItemsSource="{Binding Days}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="13" Columns="32" Margin="0,0,1,5" Width="1158" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:ucYearViewDay/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
INotifyPropertyChanged
每一天都是我设计的支持显示上午、下午或全天代码的用户控件(暗示)。然后将日期添加到日期控件绑定到的 ObservableCollection 中。
问题
以上所有设置工作都是通过构造函数中的调用完成的,调用时Form.Show()
大约需要 10-12 秒来呈现表单。
研究
我花了一些时间阅读我可以做些什么来加快速度,但我似乎无法找到任何帮助。我已经尝试设置 ItemsControl 以按照本文中的建议使用虚拟化,但这没有任何区别 - 据我所知,如果我使用大量滚动并且我的控件不滚动,我只会以这种方式获得性能提升。MSDN 上有一个关于提高 WPF 性能的指南,我一直在查看,特别是关于数据绑定的部分,但我没有找到任何帮助。
根据我所说的,是否有任何其他技术可以用来加快速度?我想我可以取消绑定并直接写入控件,但这将是最后的手段。