2011-02-04 45 views
1

在Silverlight 4應用程序中,我們的用戶羣需要爲我們定義他們想要的按鈕,標籤,各種屏幕文本等內容。我瞭解資源文件的方法,但是我想知道的是當想要給那種對用戶定義資源文件中的文本的控制,讓他們以這種方式可以查看他們對XAML頁面所做的更改的最佳方式是什麼?他們是否需要安裝Blend?Silverlight 4 MVVM應用程序,由用戶編輯resx,僅混合?

我依稀記得在做一個WinForms應用程序時,有一點我把實際的winform交給了用戶,他們用某種可視化設計器來編輯按鈕文本,標籤等等,然後保存這些更改到資源文件。

我們的應用程序是MVVM,因此XAML中的每個項目都將綁定到其視圖模型中的屬性,然後該屬性將從資源文件加載條目。

如果有方法讓用戶更新resx文件的內容,同時直觀地查看其更改,請告訴我。

非常感謝您的幫助。

回答

0

我在過去所做的是爲資源(resx)文件建立專用程序集。默認情況下,它們被「嵌入」到程序集中。訣竅是將resx文件上的屬性更改爲不嵌入(False)。這樣,這些文件就是獨立的resx xml文件,它們必須與程序集一起使用(並且位於正在運行的應用程序的相同/ bin目錄中)。這是您在/ en-US /和其他資源的某些/ bin目錄中看到的內容。過去,我爲用戶創建了一個簡單的GUI,以便能夠編輯這些被寫回到磁盤的resx文件。我不熟悉Silverlight的內部工作需要這種類型的權限,但我猜想在更糟糕的情況下,編輯的resx文件只能上傳到服務器,在下一次應用程序重新啓動或下載時下載新副本。

現在,當我說「過去」時,那是在2003年的時候。最近我不得不手動使用ResXResourceReader來做這件事,因爲現有的組件無法修改。

一些示例代碼(從內存中寫它,完全未經測試):

using (var reader = new ResXResourceReader("[path-to-bin]/MyResources.resx")) 
{ 
    var value = reader["My_key_in_the_resx_file"].ToString; 
} 

請注意,通過走這條路,你就可以訪問其他類型的資源,如二進制和文件中嵌入的詮釋,他RESX文件。

最後,看你的編碼格式。一些海外編輯使用UTF16。因此可能需要使用通用的Unicode轉換器。

另請注意,有一個ResXResourceWriter類,如果您想要通過代碼更新自己的作者以更新resx文件。

相關問題