2012-07-03 32 views
-1

要求不同的組件的枚舉值當我有兩個組件
1. MyProj.GUI 2.的Myproj丟失的資源經由的Xaml

MyProj i。在MyProj.GUI限定enum MergeAction {ApplyTarget, ApplyToWorkingCopy, Ignore};
,我有一個的XAML組合框爲這樣:

xmlns:Merge="clr-namespace:Megatec.EB2UDF.Merge;assembly=Megatec.EB2UDF"

<DataTemplate DataType="{x:Type Merge:DifferenceViewModel}"> 
    <ComboBox SelectedValue="{Binding Path=MergeAction}"> 
    <ComboBox.Items> 
     <Merge:MergeAction>Ignore</Merge:MergeAction> 
     <Merge:MergeAction>ApplyToWorkingCopy</Merge:MergeAction> 
     <Merge:MergeAction>ApplyToTarget</Merge:MergeAction> 
    </ComboBox.Items> 
    </ComboBox> 
</DataTemplate> 

WH恩我打開窗戶,我得到的異常System.Resources.MissingManifestResourceException
找不到適合指定區域性或中性文化的資源......

而無需ComboBox.Items標籤......一切都很酷...

這是爲什麼?
我做錯了什麼?

編輯:

該組件從XAML中(即使是同一對象)調用多次

<ribbon:Button Label="Send Change" CommandParameter="{x:Static Merge:MergeAction.ApplyToTarget}" Command="{Binding ApplyActionCommand}"> 
    <ribbon:Button.ImageSourceLarge> 
     <BitmapImage UriSource="/Images/MAIL.png" /> 
    </ribbon:Button.ImageSourceLarge> 
</ribbon:Button> 

組合框是做錯誤。

+0

它是唯一使用另一個程序集的地方嗎?看來這個問題不在Xaml中,當另一個程序集被加載時它會發生。 – dvvrd

+0

@dvvrd不,我使用它很多,ViewModel在這個'合併'程序集。編輯帖子 –

+0

可能是你試圖本地化MergeAction枚舉的顯示名稱或像這樣的smth?看到你的一些虛擬代碼真的很有趣 – dvvrd

回答

1

好了,找到了解決辦法:

我kind'a結點到WPF,所以我不知道爲什麼它的工作,但它確實!

我添加了一個ItemTemplateComboBox這樣:

<ComboBox SelectedValue="{Binding Path=MergeAction}"> 
    <ComboBox.Items> 
    <Merge:MergeAction>Ignore</Merge:MergeAction> 
    <Merge:MergeAction>ApplyToWorkingCopy</Merge:MergeAction> 
    <Merge:MergeAction>ApplyToTarget</Merge:MergeAction> 
    </ComboBox.Items> 
    <ComboBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding}"></TextBlock> 
    </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

而現在它是所有酷..

但是...我不知道爲什麼?

+0

嘿,真的很酷:)如果你將TextBlock標籤改成一個,會拋出這個異常嗎? – dvvrd

+0

是的,它再次發生在'ContentPresenter'上, 有什麼區別?爲什麼?它搜索的資源是什麼? –

+0

我完全不知道它,但是可能當你試圖將一些枚舉值傳遞給ContentPresenter時,WPF魔術師不會僅僅爲此調用ToString(),但是希望執行可能的本地化並請求具有當前文化的資源。您的問題是[已知](http://support.microsoft.com/kb/839861?ln=en-us)。我會推薦你​​使用[ObjectDataProvider](http://stackoverflow.com/questions/6145888/how-to-bind-an-enum-to-a-combobox-control-in-wpf)而不是你的解決方案,它使添加值枚舉更簡單,並不那麼cheaty :) – dvvrd