在 Windows Phone 8 应用中将转换器绑定到 XAML

本文关键字:转换器 绑定 XAML Windows Phone 应用 | 更新日期: 2023-09-27 18:36:18

my .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>

不转换器.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;
        }
    }
}

它显示错误

"命名空间 clr-namespace:MVVM1Test.Resources.Converters 中不存在名称 NotConverter"

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

在 Windows Phone 8 应用中将转换器绑定到 XAML

将项目放入资源字典中时,必须为它们提供密钥。x:Name属性是冗余的(除非需要从代码隐藏访问对象)。

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

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

这可能会

对你有所帮助

xmlns:MyAppConverters="clr-namespace:MyApp.Converters"

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

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

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

保存并重新启动视觉工作室。