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>