2013-01-06 28 views
0

我試圖做一些數據綁定到WPF上的枚舉,但我得到一個異常。當試圖做一個例外數據綁定到WPF上的枚舉

  1. 首先,我有我的NS聲明,指着我已經加入到項目中的參考:

    xmlns:defs="clr-namespace:API.Definitions;assembly=API"

    也:

    xmlns:sys="clr-namespace:System;assembly=mscorlib"

  2. 那我在窗口資源中添加枚舉:

    <Window.Resources 
          <ResourceDictionary> 
           <ObjectDataProvider x:Key="someEnum" 
               MethodName="GetValues" 
               ObjectType="{x:Type sys:Enum}"> 
            <ObjectDataProvider.MethodParameters> 
             <x:Type TypeName="defs:someEnum" /> 
            </ObjectDataProvider.MethodParameters> 
           </ObjectDataProvider> 
          </ResourceDictionary> 
    </Window.Resources> 
    
  3. 我試圖使用它在組合框:

    ComboBox ItemsSource="{Binding Source={StaticResource someEnum}}"

  4. 運行它,並得到一個XamlParseException:

Type reference cannot find type named '{clr namespace:API.Definitions;assembly=API}someEnum'.

我已經瀏覽此API參考和我可以清楚地看到枚舉並使用代碼 它如果我願意。我還測試了綁定到本地枚舉(未引用), ,這完美的作品。

一些答案意味着從xmlns:defs =「clr-namespace:API.Definitions; assembly = API」中移除程序集= API應該解決這個問題,但它不會。

感謝您的幫助。

+1

你確定關於枚舉類型名嗎?它真的是'someEnum'還是'SomeEnum'?當類型不存在於引用的程序集中時,我會得到完全的錯誤消息。否則,它完美的作品。 – Clemens

+0

絕對正面。爲了讓事情變得更加奇怪,我有另一個解決方案,它具有與上面描述的相同的引用程序集和相同的XAML代碼行。但是,另一個解決方案中的引用程序集也是一個附加項目。在這種情況下,所有工作都可以找到,但是當它是.dll時,我無法使它工作。 – gr3x

+0

仍然適用於我,如果我也這樣做。你可以嘗試從代碼隱藏中訪問'someEnum'嗎? – Clemens

回答

0

好的,我發現是什麼導致它 - 引用的API是爲x86而不是「任何CPU」構建的。對此有何解釋?

+0

這是因爲WPF Designer是x86根據。 –