0

我在一个窗口上有一个组合框,它使用外部资源程序集作为它的字体,它的运行速度非常慢(下拉 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 & .Net 4.0,资源组装约40MB。)

4

1 回答 1

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但如果程序集的加载速度太慢,则视图可能会在资源可用之前开始初始化并导致引发异常。

于 2013-01-10T08:36:06.327 回答