我的应用程序中有两个简单ResourceDictionary
的。
转换器.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
什么都没有。移动我的资源文件后无法获得良好的性能,我实际上无法将应用程序交付给我的客户。
任何人都可以解释我为什么并为此提供一个好的解决方案?!