与添加EnumMatchToBooleanConverter我的XAML文件的问题(Problems

2019-08-16 15:52发布

我试图按照本教程单选按钮

我创建了一个名为EnumMatchToBooleanConverter类,它是在我的WPF项目的顶层。 它说,放置这样的window.resources内:

<Window.Resources>
  <EnumMatchToBooleanConverter x:Key="enumConverter" />
</Window.Resources>

我使用它在用户控件,所以我已经把它放在一个StackPanel,而不是内部:

<StackPanel.Resources>
  <EnumMatchToBooleanConverter x:Key="enumConverter" />
</StackPanel.Resources>

我有Microsoft Visual Studio旗舰2012,它给我一个错误:

EnumMatchToBooleanConverter不是在的Windows Presentation Foundation(WPF)项目的支持。

任何想法,我做错了什么? 不允许我将它放在一个stackpanel.resources里面?

我只是想将其置于grid.resources内

<Grid.Resources>
  <EnumMatchToBooleanConverter x:Key="enumConverter" />
</Grid.Resources>

它说

类型“EnumMatchToBooleanConverter”没有被发现。 验证你是不是缺少程序集引用,所有引用的程序集已经建成。

那么它是在同一个名字作为我的项目的休息,所以我不能确定它为什么没有发现它。

Answer 1:

更改

<EnumMatchToBooleanConverter x:Key="enumConverter" />

对于

<local:EnumMatchToBooleanConverter x:Key="enumConverter" />

在XAML中引用的所有非内置类必须由相应的xmlns前缀作为前缀。



Answer 2:

HighCore的是正确的。 只需添加到这个命名空间的讨论中,我想我会指出另一种方法,可以帮助使代码更易读或帮助诊断,其中某些控件/数值转换器/等都被(即,组装他们是真正来自何处来)。 这种技术可以让您的XAML出现像基督教有它在自己的博客( 没有的xmlns前缀):

<EnumMatchToBooleanConverter x:Key="enumConverter" />

从本质上讲,你执行一些一些命名空间映射到巩固命名空间这样的 (只有当文件在不同的装配/项目工程)。 所以在我上面的例子,你已经映射到默认的xmlns您的命名空间中的一个,那么你就不需要在XAML任何前缀。

我还在试图找出多远采取这种技术和保罗Stovell谈论它取到了极致,就像我上面显示。

即使你最终不会把它应用到那种程度,不了解它可能会派上用场,如果你正在寻找别人的XAML和他们申请这样的一个映射。 明知会提醒您查找AssemblyInfo.cs文件并检查映射,并可能帮助您跟踪其中一个控制/值转换器的/ etc实际位置。



文章来源: Problems with adding EnumMatchToBooleanConverter to my xaml file