2

我的应用程序中有两个简单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什么都没有。移动我的资源文件后无法获得良好的性能,我实际上无法将应用程序交付给我的客户。

任何人都可以解释我为什么并为此提供一个好的解决方案?!

4

0 回答 0