簡體   English   中英

當啟動項目是 class 庫時,找不到 WPF ResourceDictionary 轉換器資源

[英]WPF ResourceDictionary converter resource not found when startup project is a class library

作為這個冗長解釋的先驅,我查看了現有的帖子並沒有找到我想要的東西,我也用谷歌搜索了這個問題,也沒有找到任何解決我問題的方法。

我是一個自我認為 C# WPF 菜鳥。 這是我的第一篇文章,我討厭尋求幫助,因為我討厭浪費別人的時間。 但我發現自己處於一個我無法解決的境地。 因此,如果有人可以幫助闡明這一點,我將不勝感激。

我正在開發 Autodesk Revit 插件。 該解決方案包括三個項目,

  1. Addin Project 是一個 class 庫,它實現了向 Autodesk Revit 注冊的 Autodesk Reivt IExternalApplication 接口。
  2. Manager Project,是一個 WPF 應用程序,當用戶單擊 Revit 用戶界面中的按鈕時,它會從 Addin class 庫項目中調用。
  3. 安裝程序,(與此問題無關)

我的問題與 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM