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 に答える