C# Can';绑定时不要添加转换器

C# Can';绑定时不要添加转换器,c#,xaml,converter,C#,Xaml,Converter,我已经实现了如图所示的接口IValueConverter,现在我将它与我的代码放在同一个文件中(两个类,都在同一名称空间中,但实现了IValueConverter和继承窗口) 在XAML中,我添加了一个标签,其可见性绑定到需要转换的结果,如图所示 因为我想使用一个真正的自定义转换器,而不是微软所看到的(没有布尔、整数等),所以我需要参考我的实现(与BooltVisibilityConverter相反)。我希望intellisense在这件事上能给我很好的建议,但我最终还是像这样向父元素(或窗

我已经实现了如图所示的接口IValueConverter,现在我将它与我的代码放在同一个文件中(两个类,都在同一名称空间中,但实现了IValueConverter和继承窗口)

在XAML中,我添加了一个标签,其可见性绑定到需要转换的结果,如图所示


因为我想使用一个真正的自定义转换器,而不是微软所看到的(没有布尔、整数等),所以我需要参考我的实现(与BooltVisibilityConverter相反)。我希望intellisense在这件事上能给我很好的建议,但我最终还是像这样向父元素(或窗口或应用程序)添加了一个资源


这引发了两个问题——首先,我为什么要获得(以及什么是)ComboCellBindingConverter。其次,我应该在那里放些什么(因为这个符号无法解析,我需要指向我的实现)

由于鬼鬼祟祟,我尝试如下规避,但这只会导致同样的错误

<StackPanel.Resources>
  <BamseGurka x:Key="BamseConverter" />
</StackPanel.Resources>

使用intellisense,我在窗口标记中找到了一个新属性,并进行了以下设置

xmlns:blopp="clr-namespace:The.Actual.Namespace" ...

<StackPanel.Resources>
  <blopp:BamseGurka x:Key="BamseConverter" />
</StackPanel.Resources>
xmlns:blopp=“clr namespace:The.Actual.namespace”。。。
现在,它抱怨BamseGurka不在提到的名称空间中,这是一个大胆的谎言,因为它是!只是为了好玩,当我将BamseGurka转换为原始类的名称(记得同一文件中的另一个吗?)时,错误消失了


所以我有点不知所措。以前没有使用过这样的自定义转换器。建议?如果DataContext为空,Google给了我很多东西,但在转换器方面,Google给了我更好的选择。

例如,如果您将转换器放在根文件夹“converters”文件夹中的单独文件中,您将在字典中注册它,如下所示:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:converters="clr-namespace:BamseGurka.Converters">

    <converters:BamseConverter x:Name="BamseConverter" />
</ResourceDictionary>

然后,您就可以像以前一样绑定到它:

<Label Name="ErrorMessage" ...
       Visibility="{Binding Converter={StaticResource BamseConverter}}" >


当然,请记住在可见性中设置绑定的属性,因为此时它将不起作用。

例如,如果将转换器放在根文件夹“Converters”文件夹中的单独文件中,您将在字典中注册它,如下所示:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:converters="clr-namespace:BamseGurka.Converters">

    <converters:BamseConverter x:Name="BamseConverter" />
</ResourceDictionary>

然后,您就可以像以前一样绑定到它:

<Label Name="ErrorMessage" ...
       Visibility="{Binding Converter={StaticResource BamseConverter}}" >


当然,记住在可见性中设置绑定的属性,因为此时它不起作用。

可以发布一个可复制的示例吗?最后一个解决方案应该可以工作(使用正确的名称空间引用参考资料中的转换器)-有时wpf设计者需要构建/重建才能正常工作…发布一个工作示例将很困难,因为它是更大解决方案的一部分。根据我读过的指南和教程,它应该是有效的,但是,因为它显然不起作用,所以我正在寻找一些关于鬼鬼祟祟的陷阱的提示。你说设计师需要重建是什么意思?我们谈论的是在VS中重建解决方案,还是您指的是更多?请详细说明。只有构建解决方案——就像Artur Malendowicz提到的那样,您忘记了实际的绑定属性可见性=“{binding PropertyToBind,Converter={StaticResource BamseConverter}}}”,才能发布一个可复制的示例?最后一个解决方案应该可以工作(使用正确的名称空间引用参考资料中的转换器)-有时wpf设计者需要构建/重建才能正常工作…发布一个工作示例将很困难,因为它是更大解决方案的一部分。根据我读过的指南和教程,它应该是有效的,但是,因为它显然不起作用,所以我正在寻找一些关于鬼鬼祟祟的陷阱的提示。你说设计师需要重建是什么意思?我们谈论的是在VS中重建解决方案,还是您指的是更多?请详细说明。仅构建解决方案-就像Artur Malendowicz提到的那样,您忘记了实际的绑定属性可见性=“{binding PropertyToBind,Converter={StaticResource BamseConverter}”
<Label Name="ErrorMessage" ...
       Visibility="{Binding Converter={StaticResource BamseConverter}}" >