2012-07-03 30 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