2014-04-13 89 views
0

我有一個從Window派生的XAML/cs類(EditorWindow)並實現了一些特殊功能。 我也有一個派生自EditorWindow(public class DetailedEditorWindow:EditorWindow)的.cs文件的子類。在代碼隱藏項目之間擴展WPF窗口

如果它們都在同一個項目中,我可以打開DetailedEditorWindow就好了(如果它們位於不同的命名空間中,它沒有區別),但是如果將DetailedEditorWindow移動到另一個引用EditorWindow的項目,缺少SystemException - 說它錯過了EditorWindow.xaml。

這是爲什麼,我該如何解決這個錯誤?

謝謝你在前進, JasonX

回答

1

那麼這是因爲EditorWindow是局部類,不能它需要XAML代碼函數的.cs才起作用。將DetailedEditorWindow放入外部程序集並創建實例時,它也會調用EditorWindow構造函數。但是這將試圖找到與本地資源Uri內部引用的XAML文件。這個Uri無法在您的第二個項目中解決。我認爲你不能爲此做點什麼。

你可以看到.csproj的文件,這裏面參考:

<Compile Include="MainWindow.xaml.cs"> 
    <DependentUpon>MainWindow.xaml</DependentUpon> 
    <SubType>Code</SubType> 
</Compile> 

在這種情況下,你可以不XAML創建一個窗口和內部實現邏輯。然後從它繼承EditorWindow和DetailedEditorWindow。但是你不能通過名字引用Xaml控件。

另一種可能性是使用將實現所有邏輯的自定義控件+樣式,並且您的窗口將僅託管此控件。

+0

我很害怕這個......我在幾個小時前發佈了一個類似的問題(現在已經刪除),並且有一些關於設置URI的討論(絕對路徑從local到... global),這是關於pack URI )但我找不到更改引用URI的方法。這可能嗎? – JasonX

+0

你可以嘗試玩你的csproj文件,並設置一個完整的uri而不僅僅是xaml文件名。但我幾乎可以肯定,uri是在編譯時設置的。 – Dmitry

+0

呃...拍攝。共享方法與XAML控件(移動,刪除等)有關,這主要是爲什麼我要擴展EditorWindow。試過用EditorWindow項目播放.csproj,沒有成功。除了重新設計大部分應用程序,真的沒有別的辦法嗎? (這個問題被忽略了,那裏有更多的代碼)。 – JasonX