我在一个窗口上有一个组合框,它使用外部资源程序集为它的字体,它的运行速度非常慢(拉下7-8秒)。
<ComboBox ItemTemplate="{StaticResource LangComboboxItemTemplate}"
x:Name="Lang_Cbx" Width="295" ItemsSource="{Binding Locales}" Height="32"
FontFamily="/FontLibrary;component/Fonts/Font.CompositeFont#Font"
SelectedValue="{Binding CurrentLanguage}" SelectedValuePath="LocaleId"
/>
当我删除'FontFamily'属性时,组合框按预期运行。
有更好的方法吗?可能要预加载资源程序集吗?
(使用VS2010&amp; .Net 4.0,资源程序集约为40MB。)
答案 0 :(得分:1)
在App.xaml中:
<Application.Resources>
<FontFamily x:Key="FontFamilyComboBox">/FontLibrary;component/Fonts/Font.CompositeFont#Font</FontFamily>
</Application.Resources>
在视图中:
FontFamily="{DynamicResource FontFamilyComboBox}"
这将导致资源在应用程序启动时加载(您将“支付”那些7-8秒),但组合将按预期运行。
您也可以使用StaticResource
而不是DynamicResource
,但如果程序集的加载速度太慢,则视图可能会在资源可用之前开始初始化并导致抛出异常。