2014-02-27 33 views
-1

我找到了WPF.MDI的源碼,我嘗試在沒有任何特定dll的情況下在我的項目中使用它。所以,我添加源到項目C#WPF.MDI沒有DLL

然後,寫xmlns聲明xmlns:mdi="clr-namespace:WPF.MDI"並創建了一個容器MdiChild

<mdi:MdiContainer Theme="Aero"> 
     <mdi:MdiChild /> 
    </mdi:MdiContainer> 

不過,我收到一個錯誤XamlParseException

我想,我做錯了。但是,這有什麼解決方案?

更新: 當我將WPF.MDI.dll放入帶有.exe文件的文件夾中並啓動它時 - 沒有錯誤。爲什麼它想要找到DLL?

+0

你也收到了某種關於什麼地方出了錯詳細的錯誤信息後,解決了嗎? –

+0

調用類型爲「WPF.MDI.MdiContainer」的構造函數,滿足指定的綁定約束,導致一個異常。「行號」7「和」10.「中的位置,該字符串是' –

回答

0

的問題刪除串96-100在MdiContainer.cs

 if (Environment.OSVersion.Version.Major == 5) 
      ThemeValueChanged(this, new DependencyPropertyChangedEventArgs(ThemeProperty, Theme, ThemeType.Luna)); 
     else 
      ThemeValueChanged(this, new DependencyPropertyChangedEventArgs(ThemeProperty, Theme, ThemeType.Aero)); 
0

嘗試設置這樣的命名空間聲明:

xmlns:mdi="clr-namespace:WPF.MDI;assembly=MDISource" 

所以添加assembly部分。 如果您的班級在不同的程序集中,則需要添加此項。見MSDN

裝配=包含部分或全部被引用的CLR 命名空間的組件。此值通常只是程序集的名稱,而不是路徑的 ,並且不包含擴展名(例如.dll或.exe)。 該程序集的路徑必須在項目文件中建立爲項目引用 ,該項目文件包含您嘗試映射的XAML。在 爲了包含版本控制和強名稱簽名,程序集 的值可以是由AssemblyName定義的字符串,而不是簡單的字符串名稱 。

如果被引用的clr名稱空間在與引用自定義類的應用程序代碼相同的程序集中定義,則可以省略程序集。或者,這種情況的等效語法是指定assembly =,在等號​​後面沒有字符串標記。

UPDATE Read this answer.

+0

這對我沒有幫助,我需要寫'MDISource'嗎?我沒有得到它 –

+0

你可以忽略這個答案,我讀錯了你的問題。項目,對嗎?那麼這是不需要的。 – Loetn

+0

是的,我把它添加到同一個項目中 –