C# wpfa窗口/用户控件资源的代码在哪里?

C# wpfa窗口/用户控件资源的代码在哪里?,c#,wpf,xaml,radio-button,C#,Wpf,Xaml,Radio Button,我试图学习教程,但我不清楚EnumMatchToBooleanConverter类的代码应该放在哪里。我假设它会放在代码隐藏文件(即view.xaml.cs)中,但是当我尝试在xaml中声明资源时,类型EnumMatchToBooleanConverter没有找到。。EnumMatchToBooleanConverter在本例中是它自己的类。您应该能够在现有的代码中声明它,但我会将它粘贴到它自己的文件中以确保。 VisualStudio在查找资源时可能会出错,因此您应该重新生成项目,以防仍然显示

我试图学习教程,但我不清楚
EnumMatchToBooleanConverter
类的代码应该放在哪里。我假设它会放在代码隐藏文件(即view.xaml.cs)中,但是当我尝试在xaml中声明资源时,
类型EnumMatchToBooleanConverter没有找到。

EnumMatchToBooleanConverter在本例中是它自己的类。您应该能够在现有的代码中声明它,但我会将它粘贴到它自己的文件中以确保。 VisualStudio在查找资源时可能会出错,因此您应该重新生成项目,以防仍然显示错误

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

然后,您只需要在XAML中包含名称空间:

xmlns:local="clr-namespace:MyNamespace"

此外,请尝试重建/运行应用程序,因为XAML“intellisense”通常在生成之前不会更新名称空间中的内容。

通常,小型WPF项目应该具有以下近似文件夹结构:

  • 项目名称
    • 转换器
    • 数据访问
    • 数据类型
    • 图像
    • 视图模型
    • 观点
Converters是您应该存储
转换器
类的文件夹。在开发WPF一段时间后,您会发现
Converter
类集合的大小将增加。每个文件夹都包含我们映射到相关名称空间的类。在
转换器
类的情况下,通常如下所示:

namespace ProjectName.Converters
{
    [ValueConversion(typeof(bool), typeof(Brush))]
    public class BoolToBrushConverter : IValueConverter
    {
        ...
    }
}
<Converters:BoolToBrushConverter x:Key="BoolToBrushConverter" />
对于
数据类型
类,您可以使用如下内容:

namespace ProjectName.DataTypes
{
    public class SomeDataType
    {
        ...
    }
}
正如@LordTakkera正确提到的,然后需要通过定义XAML名称空间在XAML中引用这些类,如下所示:

xmlns:Converters="clr-namespace:ProjectName.Converters"
然后您可以在
参考资料
部分中定义
转换器
,如下所示:

namespace ProjectName.Converters
{
    [ValueConversion(typeof(bool), typeof(Brush))]
    public class BoolToBrushConverter : IValueConverter
    {
        ...
    }
}
<Converters:BoolToBrushConverter x:Key="BoolToBrushConverter" />

有关更多信息,请参阅MSDN页面的数据转换部分。MSDN上的页面是另一个有用的资源