2010-01-11 120 views
7

我們有一個Res1.resx文件,它有一個file1.doc文件。 後來我們想根據業務規則,用resx文件中的file2.doc替換file1.doc。如何實現這一點。 感謝 ň動態更新資源文件

+1

項目編譯後以編程方式替換資源文件的內容?那是你需要的嗎? – Codesleuth 2010-01-11 11:58:53

+2

等一下!影響資源文件的業務規則?!你什麼意思? – 2010-01-11 11:58:59

+1

:: ::項目編譯後以編程方式替換資源文件的內容? 是的。 – 2010-01-11 12:14:40

回答

2

對不起,我不認爲這可能是可能

1

當然,你可以做到這一點。這是我們使用的一些代碼。如果您需要更多詳細信息,請告訴我。

/// <summary> 
/// Sets or replaces the ResourceDictionary by dynamically loading 
/// a Localization ResourceDictionary from the file path passed in. 
/// </summary> 
/// <param name="resourceDictionaryFile">The resource dictionary to use to set/replace 
/// the ResourceDictionary.</param> 
private void SetCultureResourceDictionary(String resourceDictionaryFile) 
{ 
    // Scan all resource dictionaries and remove, if it is string resource distionary 
    for (int index= 0; index < Resources.MergedDictionaries.Count; ++index) 
    { 
     // Look for an indicator in the resource file that indicates that this 
     // is a dynamic file that should be removed before loading its replacement. 
     if (Resources.MergedDictionaries[index].Contains("ResourceDictionaryName")) 
     { 
      if (File.Exists(resourceDictionaryFile)) 
      { 
       Resources.MergedDictionaries.Remove(Resources.MergedDictionaries[index]); 
      } 
     } 
    } 

    // read required resource file to resource dictionary and add to MergedDictionaries collection 
    ResourceDictionary newResourceDictionary = new ResourceDictionary(); 
    newResourceDictionary.Source = new Uri(resourceDictionaryFile); 
    Resources.MergedDictionaries.Add(newResourceDictionary); 
} 
2

如果你想在運行時修改編譯資源,我認爲這是不可能的,至少不是沒有醜陋的黑客。無論如何,這是沒有意義的:如果它是一種資源,它不會被修改;如果需要修改,它不應該是一個資源。