我有一个带有网格的 Windows 8 XAML 页面,其中显示了 100 多种不同字体的示例文本。每个网格视图项中的示例文本都是相同的,并且可以使用页面顶部的文本框进行更改。
每次您键入一个字符时,所有网格视图项都会更新。问题是这明显很慢。特别是如果您快速打字。
我不确定是什么让它这么慢。它是否更新了所有网格视图项目,包括不在屏幕上的项目?是其他什么原因导致了这个问题,而这个特殊的绑定只是一个红鲱鱼?
这是我的绑定代码(我从数据模板中删除了一些 xaml 以使其更清晰):
<ScrollViewer>
<GridView x:Name="FontGridView" ItemsSource="{Binding Fonts}" SelectionMode="Multiple" Margin="116,0,40,46">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Width="600" MinHeight="100" MaxHeight="120">
<TextBox Text="{Binding ElementName=pageRoot, Path=DataContext.SampleText, Mode=OneWay}"
FontFamily="{Binding FamilyName}" FontSize="32" Background="Transparent" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</ScrollViewer>
有没有更好的方法来做到这一点,或者我可以打开任何其他性能调整的东西吗?
更新:自从 Visual Studio 2012 RC 发布以来,您不太可能犯此错误。WinRT 应用程序的模板不再以这种方式使用 ScrollViewer。对于那些移植了他们使用 Visual Studio 2011 创建的应用程序的人,我在这里保留了这个问题。