項目需要(或者前后端分離的需要),前端我使用了用戶控件庫,由后端用代碼加載和控制。
然而用戶控件庫沒法指定資源字典,於是在用戶控件的xaml文件里面手工添加了資源字典
<UserControl.Resources>
<ResourceDictionary Source="/d1.xaml"/>
</UserControl.Resources>
<Grid>
<TextBlock FontSize="{DynamicResource FontSizeL}" Text="Hello"/>
</Grid>
設計階段方便了,生成dll,被主程序調用的時候,就報錯了,說沒有該資源文件(d1.xaml),研究Pack Url后明白,可以有兩種辦法解決:
- 在主程序的相應位置導入資源文件,上面的代碼的需要在主程序根目錄下面有一個d1.xaml文件
- 修改Source
<ResourceDictionary Source="pack://application:,,,/程序集名稱;component/d1.xaml"/>
如果只有一個資源字典,算是解決了。
現在項目需要多語言了,要英文、中文、泰文的了,需要根據需要動態導入資源字典,暈了。
目前的解決方案是,設計階段把資源文件拉進來,手工添加,編譯之前把<UserControl.Resources>刪除,很是麻煩,不知道有沒有更方便的方式。