1

私は動的に a をロードして、次のようResourceDictionaryに追加して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ロードされると停止しますか? その場合は、無視してかまいません...結局のところ、それらは単なる警告です。

Bindingsでも同様の状況がありましたが、値がすぐに来ないことBinding.IsAsyncを に伝えるために設定できるプロパティがあります。Bindingこれにより、警告が消えました。残念ながら、 には同様のプロパティがあるとは思わないResourcesので、そのままにしておくか、以前のものをロードしてみる必要があるかもしれませんResourceDictionary

于 2013-12-05T14:50:33.270 に答える
0

同様の質問は、この質問で何年も前に「回答」されました。

残念ながら、「回答済み」とは、Microsoft がまだ修正していない WPF の問題であることを意味します。

于 2015-07-09T14:16:03.203 に答える