[英]WPF ResourceDictionary converter resource not found when startup project is a class library
作為這個冗長解釋的先驅,我查看了現有的帖子並沒有找到我想要的東西,我也用谷歌搜索了這個問題,也沒有找到任何解決我問題的方法。
我是一個自我認為 C# WPF 菜鳥。 這是我的第一篇文章,我討厭尋求幫助,因為我討厭浪費別人的時間。 但我發現自己處於一個我無法解決的境地。 因此,如果有人可以幫助闡明這一點,我將不勝感激。
我正在開發 Autodesk Revit 插件。 該解決方案包括三個項目,
我的問題與 WPF 應用程序中的資源和 MergedDictionaries 有關。 我有各種我需要設置樣式的控件的樣式資源,還有數據和轉換器資源。
我將資源添加到 App.axml 資源部分以及項目中的頁面。 原因是我的問題的一部分。
當用戶單擊以從 Addin Project 中打開 MainWindow 時,資源會出現無法找到“x”資源的問題。 消息如下所示:
“例外:找不到名為 'FamTypeConverter' 的資源。資源名稱區分大小寫。”
該轉換器用於 ListView CellTemplate 的樣式,該樣式位於另一個資源文件中。
奇怪的是,資源文件包含其他可以正常工作的資源。 但這尤其給我帶來了問題。 該資源是一個實現 IValueConverter 的轉換器,在我解決此問題時當前不進行轉換,它只返回 convert 和 convert back 方法的值。
我在同一個 *.CS 文件中有另一個轉換器,稱為“FileSizeConverter”,它只是將 INT 輸入轉換為格式化的文件大小字符串。 資源在同一個字典中,並在同一個 *.CS 文件中指向它的轉換器,不同的 class (顯然),一個完美的工作。
我嘗試使用 static 和動態資源,將資源 xaml 文件的構建操作設置為頁面、資源、嵌入式資源,結果沒有變化。
我已經嘗試將資源添加到頁面中,並嘗試了相對和打包 url。 似乎沒有任何效果。 我還必須將 MergedDictionaries 添加到主要的 window、頁面和 app.xaml 以供當前工作的資源使用。 如果我不將資源添加到頁面中,則會出現相同的錯誤,找不到“x”資源。
如果我將啟動項目設置為 WPF 項目,則沒有問題。 所有資源都有效。 我認為問題是當 Window 在另一個項目中時,啟動項目不會加載或緩存 WPF 項目中的資源。
我 80% 確定這與 WPF 應用程序擴展“應用程序”而 class 庫沒有這一事實有關。 我認為應用程序 class 是加載資源的地方,但這是我缺乏知識的地方。
我不知道我是否走在正確的軌道上,或者我是否錯過了一些如此明顯的事情,以至於當我意識到出了什么問題時,我會想踢自己。
對不起,冗長的解釋,我希望我已經讓自己清楚簡潔。 如果需要任何清晰度,請隨時提出要求。
提前謝謝你 德雷克克萊門茨
我最終將任何 GridView styles 移動到頁面而不是資源字典。 我認為這與導致問題開始的資源字典中使用的轉換器有關。 在頁面上定義 GridView 可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.