私のアプリケーションには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}"/>
BitmapToBitmapSourceConverter
my 内で検索するときに例外が発生します。Styles.xaml
これは、別の 内で定義されているためResourceDictionary
です。
そのような例外を避けるために、リソースを からMainWindow.xaml
に移動するように提案されました。App.xaml
やったー、いきなり…ドラマ!その例外はもう発生しませんが、アプリケーションのロード時間は 10 倍長くなりました。画面に表示されるまでに 5 秒以上かかる場合があり、通常、Window
コンテンツは 1 秒または 2 秒以上白く表示されます。
アプリケーションをexe
それ自体から実行しようとしましたが、モードDebug
とRelease
モードの両方で実行しようとしました...何もありません。リソース ファイルを移動した後、良いパフォーマンスを得る方法がなく、実際にアプリケーションを顧客に提供できません。
誰でも理由を説明して、これに対する良い解決策を提供できますか?!