-----------------
XamlParseException
Name/Key XXXXXX を持つ Resource が見つかりません [Line: XX Position: XX]
-----------------
Expression Blend Preview For Silverlight 5 だからなのかもしれないが、App.xaml の MergedDictionaries 内で複数のリソースファイルをロードしようとした時に別リソースファイルへの参照があるとダメそう。イメージファイルの定義が1ファイルに纏めたいんだけど。。。
対処としては、App.xaml 内で定義している ResourceDictionary をコードビハインドでロードさせる。
private void loadResource(Uri uri)
{
var info = Application.GetResourceStream(uri);
string xaml;
using (var reader = new StreamReader(info.Stream))
{
xaml = reader.ReadToEnd();
}
ResourceDictionary result = (ResourceDictionary)XamlReader.Load(xaml);
foreach (DictionaryEntry item in result)
{
try
{
Application.Current.Resources.Add(item.Key, item.Value);
}
catch (Exception ex)
{
}
}
}
実行時はそれでいんだけど、デザイナで表示出来ないのもなんとかならんか。調べてみると、DesignTimeResources.xaml というものがあり、Blend 起動時に参照が切れているリソースがあると、自動生成してくれる。(Properties ディレクトリ配下出来る)
これでもダメな場合、複数の ResourceDictionary ファイルを1ファイル内でロードするようにしたものをDesignTimeResources.xamlに書くとよい。
それでもダメな場合、一度ビルドして Blend ないし VisualStudio を終了させ、起動させると表示されることがある。
定義の仕方が悪いのかもしれないが、なんともすっきりしないやり方だ〜。
0 件のコメント:
コメントを投稿