Wpf 通过Xaml调用其他程序集的枚举值时缺少资源

Wpf 通过Xaml调用其他程序集的枚举值时缺少资源,wpf,xaml,exception,resources,enums,Wpf,Xaml,Exception,Resources,Enums,我有两个组件 1.MyProj.GUI 2.MyProj 在MyProj中,我定义了一个enum MergeAction{ApplyTarget,ApplyToWorkingCopy,Ignore} 在MyProj.GUI中,我有一个Xaml for组合框: xmlns:Merge=“clr命名空间:Megatec.EB2UDF.Merge;assembly=Megatec.EB2UDF” 但是只有组合框出错。好了,找到了解决方案: 我是WPF的核心,所以我不知道它为什么有效,但它确实有效 我在

我有两个组件
1.MyProj.GUI 2.MyProj

MyProj
中,我定义了一个
enum MergeAction{ApplyTarget,ApplyToWorkingCopy,Ignore}
MyProj.GUI
中,我有一个Xaml for组合框:

xmlns:Merge=“clr命名空间:Megatec.EB2UDF.Merge;assembly=Megatec.EB2UDF”


但是只有组合框出错。

好了,找到了解决方案:

我是WPF的核心,所以我不知道它为什么有效,但它确实有效

我在组合框中添加了一个
ItemTemplate
,如下所示:

<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>

忽略
应用程序工作副本
应用目标
现在一切都很酷


但是,。。。我不明白为什么?

这是唯一一个使用其他组件的地方吗?问题似乎不在Xaml中,而是在加载另一个程序集时发生的。@dvvrd不,我经常使用它,ViewModel在这个
Merge
程序集中。编辑了邮戳您是否正在尝试像这样本地化合并操作枚举或smth的显示名称?看到您的一些VM代码真的很有趣(嘿,真的很酷:)如果您将TextBlock标记更改为一个,会引发此异常吗?是的,
ContentPresenter
,它会再次发生,有什么区别?为什么会这样?它搜索了哪些资源?我不太清楚,但当你试图将一些枚举值传递给ContentPresenter时,WPF magic可能不只是为此调用ToString(),而是希望进行可能的本地化,并请求具有当前区域性的资源。你的问题是。我建议您使用,而不是您的解决方案,它使添加值到枚举更简单,而不是那么欺骗:)我也尝试了ObjectDataProvider,认为这是问题所在,所以我简化了情况:)如果没有模板,它也会失败。
 <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>
<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>