1

我正在动态加载 aResourceDictionary并将其添加到MergedDictionaries如下所示:

var mergedDictionaries = Resources.MergedDictionaries;
mergedDictionaries.Clear();

// Generic styles            
ResourceDictionary vsStyles = new ResourceDictionary();
vsStyles.Source = new Uri("pack://application:,,,/AssemblyName;component/VSTheme/VSStyles.xaml");
mergedDictionaries.Add(vsStyles);

// Theme-dependent styles
ResourceDictionary bright = new ResourceDictionary();
bright.Source = new Uri("pack://application:,,,/AssemblyName;component/Images/Bright.xaml");
mergedDictionaries.Add(bright);

Bright.xaml 如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <BitmapImage UriSource="..\Images\Bright\folder-bright.png" x:Key="FolderItemImage" />
    <BitmapImage UriSource="..\Images\Bright\class-bright.png" x:Key="ClassItemImage" />
(...)
</ResourceDictionary>

这些图像正在 UI 中显示的树视图项中使用:

<Image x:Name="iIcon" Width="16" Height="16" Margin="0, 1, 3, 1" Source="{DynamicResource FolderItemImage}"/>

通常,它们显示没有问题,但是当我运行程序时(尽管图像显示正确),我收到很多警告:

System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='NativeImage'
System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='ClassItemImage'
System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='NativeImage'
System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='ClassItemImage'

为什么会这样?

4

2 回答 2

0

这些错误可能只是在加载之前发生......加载ResourceDictionary后它们会停止吗?如果是这种情况,那么您可以忽略它们……毕竟,它们只是警告。

我在 s 中遇到过类似的情况Binding,但是Binding.IsAsync我可以设置一个属性来告诉Binding值不会立即出现。这使警告消失了。不幸的是,我认为 没有类似的属性Resources,所以你可能只需要忍受它,或者尝试ResourceDictionary更早地加载你的。

于 2013-12-05T14:50:33.270 回答
0

类似的问题几年前在这个问题中得到了“回答” 。

不幸的是,“已回答”意味着微软尚未修复 WPF 的问题。

于 2015-07-09T14:16:03.203 回答