摘要:[Silverlight] 如何讀取資源檔 (以 XML 為例)
假設現在有一個 CGroping.xml 檔要放進專案當中使用
然後在 DefaultGrupReader.cs 內寫讀取的程式碼,於是我這樣寫了
XmlReader reader = XmlReader.Create("GColumnGrouping.xml");
XDocument document = XDocument.Load(reader);
執行後卻得到例外狀況,Why? Why? Why?
原本我是以為路徑可以寫的跟 XAML 讀取 Image 一樣寫相對路徑,但實驗結果是失敗的
必須先將 XML 檔案當作一個"資源"來使用,並且從專案中順著檔案路徑一層層找下去才行
首先在 XML 檔案上面按右鍵 Properties -> Build Action -> 改為 Resource
接著在讀取 XML 前須改寫路徑讀取方式
public DefaultGroupReader()
{
string filePath = GetXmlResourcePath();
XmlReader reader = XmlReader.Create(filePath);
XDocument document = XDocument.Load(reader);
}
string GetXmlResourcePath()
{
// 資源檔路徑要從專案的根目錄寫起,與此 class file 的相對路徑無關
string fn = this.GetType().Assembly.FullName;
AssemblyName assemblyName = new AssemblyName(fn);
return "/" + assemblyName.Name + ";component/" + "UIs/UserLogModule/DefaultGroup/GColumnGrouping.xml";
}
如此設定之後應該可以正確指向我們所需的檔案並且進行後續的動作