2012-02-07 4 views
0

netからRecourceDictionaryをダウンロードしてプロジェクトに接続する必要があります。ResourceDictionaryのコードからの置換

だから、App.xamlで、私は現在のResourceDictionaryとスタブのようなものを持っている:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="ResourceDictionary.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

その後、私はIsolatedStorageに新規のResourceDictionary(ResourceDictionary2.xaml)をダウンロードして保存しています。それから、私は現在のものを新しいものに置き換える必要があります。実際に

この他のファイルは、私はこのようになるだろうプロジェクトフォルダに右であるかどう:

var newDict = new ResourceDictionary { 
    Source = new Uri("/WP7ResourceDictionaryTest;component/ResourceDictionary2.xaml", UriKind.Relative) 
}; 
ResourceDictionary appResources = App.Current.Resources; 
appResources.MergedDictionaries.RemoveAt(0); 
appResources.MergedDictionaries.Add(newDict); 

このコードは動作します。

問題は、現在のRecourceDictionaryをIsoStorageにあるファイルに置き換える方法です。 は、私はこのようなURIを設定するためにしようと試み:

newDict.Source = new Uri("isostore:/ResourceDictionary2.xaml"); 

が、それは動作しません。

+0

-1とは何ですか?あなたは何を提案していますか? – giacoder

答えて

1

あなたは私のジェネリックを使用する必要がありますまず第一には、Storage Utilityはhere

を発見した分離された後次の操作を行います

ResourceDictionary isoResourceDictionary = (ResourceDictionary)IsolatedStorage_Utility.Load<ResourceDictionary>(filename); 
appResources.MergedDictionaries.RemoveAt(0); 
appResources.MergedDictionaries.Add(isoResourceDictionary); 

を次の問題はSilverlighので、あなたがInitializComponents前にこれを行うにはを持ってです/ WP7 のみはスタティックリソースを許可します。これを回避するには、現在のページを更新するしかありません。

+0

ありがとうございます。私はそれがxamlと動作するとは思わない。最初の行がエラーを返す "行1の位置2のエラー。名前空間 'http://schemas.microsoft.com/2003/10/Serialization/Arrays'からの 'ArrayOfKeyValueOfanyTypeanyType'要素が必要です。 'ResourceDictionary'という名前の 'Element'が見つかりました'、名前空間' http://schemas.microsoft.com/winfx/2006/xaml/presentation ' – giacoder

+0

私はそれがシリアライズできないと思います。それをバイト[]または何かに変換してください。 XAMLWriterを調べる – MyKuLLSKI

関連する問題