Noobie WPF命名空间和转换器问题

时间:2010-01-27 10:48:13

标签: .net wpf xaml namespaces converter

请原谅noob问题,但我会围成一圈,需要答案......

无论如何,我一直在看这篇文章WPF: How to bind RadioButtons to an enum?,但我无法在XAML文件中识别转换器。

<Window x:Class="Widget.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit"
    Title="Widget" Height="366" Width="588" WindowStyle="SingleBorderWindow">
    <Window.Resources>
        <EnumBooleanConverter x:Key="enumBooleanConverter" />
    </Window.Resources>
...

我有一个单独的文件,其中包含EnumBooleanConverter类,但上面的引用给出了以下错误:

  

错误1 XML命名空间“http://schemas.microsoft.com/winfx/2006/xaml/presentation”中不存在标记“EnumBooleanConverter”。

我尝试添加对程序集的引用,然后将标记附加到XAML但无效。

<Window x:Class="Widget.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit"
    xmlns:local="clr-namespace:Widget;assembly=Widget"
    Title="Widget" Height="366" Width="588" WindowStyle="SingleBorderWindow">
    <Window.Resources>
        <local:EnumBooleanConverter x:Key="enumBooleanConverter" />
    </Window.Resources>
...

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:6)

经过多次搔痒(并在屏幕上大量喊叫)后,我发现了问题。

事实证明,识别命名空间不应该有程序集。

我是这样定义的

xmlns:local="clr-namespace:Widget;assembly=Widget"

......但它应该就像这样

xmlns:local="clr-namespace:Widget"

答案 1 :(得分:0)

确保EnumBooleanConverter可公开访问,并且它具有公共空构造函数。