2

我的 .xaml 页面代码

<phone:PhoneApplicationPage
    x:Class="MVVM1Test.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:converter="clr-namespace:MVVM1Test.Resources.Converters"
    mc:Ignorable="d"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <phone:PhoneApplicationPage.Resources>
        <converter:NotConverter x:Name="not"></converter:NotConverter>
    </phone:PhoneApplicationPage.Resources>

    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Gray">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
    </Grid>

</phone:PhoneApplicationPage>

notconverter.cs

namespace MVVM1Test.Resources.Converters
{
    public class NotConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return !(bool)value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return !(bool)value;
        }
    }
}

它显示错误

“名称 NotConverter 不存在于命名空间 clr-namespace:MVVM1Test.Resources.Converters”

但我也将转换器类添加到解决方案中。

4

3 回答 3

2

当您将项目放入资源字典中时,您必须为它们提供键。该x:Name属性是多余的(除非您需要从后面的代码中访问该对象)。

<converter:NotConverter x:Key="not" />

此外,您遇到的错误可能是设计时问题。在我建议的更改之后尝试编译并运行。

于 2013-10-22T06:37:23.263 回答
0

我有一个类似的名称空间问题。对我来说,重新启动 Visual Studio 似乎可以解决问题。当然,您必须确保在您的 IValueConverter 类中正确定义命名空间,例如命名空间 MVVM1Test.Resources.Converters

保存并重新启动 Visual Studio。

于 2014-02-18T05:12:31.380 回答
0

这可能会帮助你

xmlns:MyAppConverters="clr-命名空间:MyApp.Converters"

<phone:PhoneApplicationPage.Resources>
    <MyAppConverters:CustomConverter x:Key="customConverter"/>    
</phone:PhoneApplicationPage.Resources>

我已经给出了示例,您可以将类名更改为您的

于 2013-10-22T06:36:16.463 回答