2012-11-05 51 views
6

我正在開發一個現代UI應用程序,我正在嘗試從backgroundtask訪問我的應用程序的資源文件(Resources.resw)。兩者都在同一解決方案中的不同項目中。 我試過這樣:從後臺任務中使用應用程序resw文件

ResourceLoader resources = new ResourceLoader("MyApp/Resources"); 

但我有一個arror,因爲它無法獲得的資源地圖。

有沒有具體的方法來做到這一點?

+0

我嘗試了另一種方式:將resw文件放在我的應用程序和我的背景任務引用的通用項目中,但我無法做到這一點。 – Sicha

+0

我想要做同樣的事情,也卡住,看到我的問題在這裏http://stackoverflow.com/questions/13363214/pass-parameters-to-ibackgroundtask – UrbanEsc

回答

1

嘗試只使用資源文件的名稱。如果名稱爲MyResources.resw,則使用:

ResourceLoader resources = new ResourceLoader("MyResources"); 
+0

我的文件是Resources.resw,我試過每一個變化* *資源**,** MyCommonProject/Resources **,** MyCommonProject ** ...即使沒有指定文件名也不起作用。 – Sicha

0

我認爲你所要做的只是不可能。只有在商店應用程序項目中才能訪問Resw。至少這是我的觀察,我已經嘗試了所有我知道的事情。

但是我可以提供一個解決方案,如果你想傳遞參數到你的後臺任務。將resw文件添加到您的Windows應用商店應用項目。當您註冊後臺任務時,請將您的設置(或任何需要傳遞給後臺任務的設置)寫入設備的本地設置。然後,從後臺任務中讀取本地設置中的相同設置。

它並不完美,但效果很好。如果這不能幫助你,我很抱歉。

2

萬一有人遇到這種情況。

在UWP中,似乎你不必做任何特殊的事情來完成這項工作。如果.resw文件包含在主UWP項目中,則可以使用資源加載器從後臺任務程序集檢索它們。對於資源字符串名爲LiveNotifications-ItemComplete,這將是以下幾點:

var resource = new ResourceLoader().GetString("LiveNotifications-ItemCompleted");

希望這有助於!

1

雖然這是一個老帖子,我想我會後我的調查結果沒有任何的建議,在這個崗位工作對我來說,當我試圖在我的UWP應用程序與我的後臺任務使用它爲Windows 10

的方式我實現它如下:

string str = ResourceLoader.GetForViewIndependentUse("Resources"). 
      GetString("MyLocalizedKey"); 

  • "Resources".resw文件在您的 「應用程序\字符串\ EN-US」 的名稱或「應用程序\字符串\˚F例如,「r-FR」。

  • "MyLocalizedKey"是要從資源文件中獲得價值的實際鍵。

現在請記住,如果您使用此方法,則必須將您的BackgroundTask的所有字符串放在主應用程序中。

希望這會有所幫助。

相關問題