名称“是"表示“否".命名空间"clr-Namespace:WPF_Tutorial.WPFTutorials.Converter"中不存在 [英] The name "YesNo" does not exist in the namespace "clr-Namespace:WPF_Tutorial.WPFTutorials.Converter"

查看:112
本文介绍了名称“是"表示“否".命名空间"clr-Namespace:WPF_Tutorial.WPFTutorials.Converter"中不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从 Wpf Tuturial

我在WPF和VB.Net中进行转换时遇到问题.我正在使用VS 2012

I'm having problem with converts in WPF and VB.Net. I'm Using VS 2012

这是我的XML代码

<Window x:Class="Binding_Sample_Converter"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-Namespace:WPF_Tutorial.WPFTutorials.Converter"  
Title="Binding_Sample_Converter" Height="300" Width="300">
<Window.Resources>
    <!--
    Error   1   The name "YesNo" does not exist in the namespace "clr-Namespace:WPF_Tutorial.WPFTutorials.Converter".
    Error   2   The name "YesNo" does not exist in the namespace "clr-Namespace:WPF_Tutorial.WPFTutorials.Converter".
    Error   3   The type 'local:YesNo' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built.

    -->
    <local:YesNo x:Key="YesNo" />
</Window.Resources>
<Grid>

</Grid>

这是我的VB.Net代码

Here is my VB.Net Code

Imports System.Windows
Imports System.ComponentModel
Imports System.Windows.Data
Namespace WPFTutorials.Converter
    Public Class Binding_Sample_Converter
        Public Class YesNo
        Implements IValueConverter

        Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
            Select Case value.ToString.ToLower
                Case "yes"
                    Return True
                Case "no"
                    Return False
            End Select
            Return False
        End Function

        Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
            If TypeOf value Is Boolean Then
                If CBool(value) = True Then : Return "yes"
                Else : Return "no"
                End If
            Else : Return "no"
            End If
        End Function
    End Class
End Class
End Namespace

我正在尝试将C#代码从所述网站教程转换为VB.Net

I'm trying to convert C# code from said website tutorial to VB.Net

错误是

        Error   1   The name "YesNo" does not exist in the namespace "clr-Namespace:WPF_Tutorial.WPFTutorials.Converter".
    Error   2   The name "YesNo" does not exist in the namespace "clr-Namespace:WPF_Tutorial.WPFTutorials.Converter".
    Error   3   The type 'local:YesNo' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built.

请帮助

预先感谢

阿米·萨拉夫

编辑. 呃. &修改后警告

Edit. Err. & Warning after modification

        <!--
    Warning 1   Namespace or type specified in the Imports 'WPFTutorials.Converter' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.  D:\Data - 2012\WPF\WPF_Tutotrial\obj\Debug\Binding_Sample_Converter.g.i.vb  35  9   WPF_Tutotrial
    Error   2   The name "YesNo" does not exist in the namespace "clr-namespace:WPFTutorials.Converter".    D:\Data - 2012\WPF\WPF_Tutotrial\Binding_Sample_Converter.xaml  11  9   WPF_Tutotrial
    Error   3   The type 'local:YesNo' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. D:\Data - 2012\WPF\WPF_Tutotrial\Binding_Sample_Converter.xaml  12  10  WPF_Tutotrial
    -->

推荐答案

您的代码中有两个问题.

There are two issues in your code.

首先,命名空间名称区分大小写. N应该为小写.名称空间声明的语法为clr-namespace.

First, Namespace name is case sensitive. N should be lower case. Syntax for namespace declaration is clr-namespace.

第二Binding_Sample_Converter的嵌套类中的YesNo类,它不应该是.您can't create an instance of nested class in XAML.来自 MSDN :

Second, YesNo class in nested class of Binding_Sample_Converter which it shouldn't be. You can't create an instance of nested class in XAML. From MSDN:

为了能够被实例化为对象元素,您的 该课程必须满足以下要求:

In order to be able to be instantiated as an object element, your class must meet the following requirements:

  1. 您的自定义类必须 公开并支持默认的(无参数的)公共构造函数.

  1. Your custom class must be public and support a default (parameterless) public constructor.

您的自定义 类不能为嵌套类.嵌套类和点" 它们的一般CLR使用语法会干扰其他WPF和/或XAML 功能,例如附加属性.

Your custom class must not be a nested class. Nested classes and the "dot" in their general CLR usage syntax interfere with other WPF and/or XAML features such as attached properties.

XAML :

xmlns:local="clr-namespace:WPFTutorials.Converter"

转换器:

YesNo类从类Public Class Binding_Sample_Converter中移出并直接在命名空间下声明.

Move YesNo class out of class Public Class Binding_Sample_Converter and declare it directly under the namespace.

Namespace WPFTutorials.Converter
   Public Class Binding_Sample_Converter
   End Class

Public Class YesNo
    Implements IValueConverter

    Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
        Select Case value.ToString.ToLower
            Case "yes"
                Return True
            Case "no"
                Return False
        End Select
        Return False
    End Function

    Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
        If TypeOf value Is Boolean Then
            If CBool(value) = True Then : Return "yes"
            Else : Return "no"
            End If
        Else : Return "no"
        End If
    End Function
  End Class
End Namespace

这篇关于名称“是"表示“否".命名空间"clr-Namespace:WPF_Tutorial.WPFTutorials.Converter"中不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆