2014-03-18 53 views
0

我正在尝试遵循this教程,但我不清楚EnumMatchToBooleanConverter课程的代码应该放在哪里。我认为它会出现在代码隐藏文件(即view.xaml.cs)中,但是当我尝试在XAML中声明资源时,我收到了沿着The type EnumMatchToBooleanConverter was not found的错误。WPF的窗口/用户控件资源的代码在哪里?

回答

0

EnumMatchToBooleanConverter在这种情况下是它自己的类。你应该可以在现有的代码背后声明它,但我会坚持它自己的文件,以确保。 Visual Studio在查找资源时可能很笨,所以如果仍然显示错误,则应重建该项目。

0

转换器(与所有其他类一样)属于它们自己的文件。

然后,你只需要在你的XAML命名空间:

xmlns:local="clr-namespace:MyNamespace" 

另外,尝试重建/运行的应用程序的XAML“智能感知”往往不会更新什么是在命名空间,直到建立已经发生。

1

在一般情况下,一个小WPF项目应具有以下近似的文件夹结构:

  • 项目名
    • 转换器
    • 数据访问
    • 数据类型
    • 图片
    • 的ViewModels
    • 查看

转换器是您存储您的Converter类的文件夹。在开发WPF一段时间后,你会发现你的Converter类的集合将会增加。这些文件夹中的每一个都包含我们映射到相关名称空间的类。在Converter类的情况下,通常是这样的:

namespace ProjectName.Converters 
{ 
    [ValueConversion(typeof(bool), typeof(Brush))] 
    public class BoolToBrushConverter : IValueConverter 
    { 
     ... 
    } 
} 

对于DataTypes类,你会使用类似:

namespace ProjectName.DataTypes 
{ 
    public class SomeDataType 
    { 
     ... 
    } 
} 

由于@LordTakkera正确提到的,你会然后需要定义一个XAML命名空间,像这样来引用XAML这些类:

xmlns:Converters="clr-namespace:ProjectName.Converters" 

然后,你可以定义ConverterResources部分是这样的:

<Converters:BoolToBrushConverter x:Key="BoolToBrushConverter" /> 

Data Binding Overview页面上MSDN的数据转换部分获取更多信息。 MSDN上的IValueConverter interface页面是另一个有用的资源。