2

私のアプリケーションには2つのシンプルなものがありResourceDictionaryます。

Converters.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:l="clr-namespace:MyApp" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <l:BitmapToBitmapSourceConverter x:Key="BitmapToBitmapSourceConverter"/>
    <l:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter"/>
</ResourceDictionary>

スタイル.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="ComboBoxBase" TargetType="{x:Type ComboBox}">
        <Setter Property="ItemTemplate">
            <Setter.Value>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Image Height="16" Margin="0,2,2,2" Source="{Binding Image, Converter={StaticResource BitmapToBitmapSourceConverter}}" VerticalAlignment="Center" Width="16"/>
                        <TextBlock Text="{Binding}" VerticalAlignment="Center"/>
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

それらが私のMainWindow.xaml内にマージされると:

<Window>
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Properties/Converters.xaml"/>
                <ResourceDictionary Source="Properties/Styles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    <Canvas>
        <ComboBox ItemsSource="{Binding Path=Items}" SelectedItem="{Binding Mode=TwoWay, Path=SelectedItem}" Style="{StaticResource ComboBoxBase}"/>

BitmapToBitmapSourceConvertermy 内で検索するときに例外が発生します。Styles.xamlこれは、別の 内で定義されているためResourceDictionaryです。

そのような例外を避けるために、リソースを からMainWindow.xamlに移動するように提案されました。App.xamlやったー、いきなり…ドラマ!その例外はもう発生しませんが、アプリケーションのロード時間は 10 倍長くなりました。画面に表示されるまでに 5 秒以上かかる場合があり、通常、Windowコンテンツは 1 秒または 2 秒以上白く表示されます。

アプリケーションをexeそれ自体から実行しようとしましたが、モードDebugReleaseモードの両方で実行しようとしました...何もありません。リソース ファイルを移動した後、良いパフォーマンスを得る方法がなく、実際にアプリケーションを顧客に提供できません。

誰でも理由を説明して、これに対する良い解決策を提供できますか?!

4

0 に答える 0