You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI中Rectangle条形图颜色不显示及转换器XLS0414报错求助

问题解决步骤

1. 修复XLS0414找不到转换器的错误

你的RatingConverter是RatingViewModel的内部嵌套类,XAML无法直接通过local:RatingConverter引用这种嵌套类型,有两种解决方式:

方法一:将转换器改为独立类

把RatingConverter从RatingViewModel中移出,单独放在RatingAgency.ViewModels命名空间下:

namespace RatingAgency.ViewModels
{
    public class RatingConverter : IValueConverter, IMarkupExtension
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null)
            {
                double rate;
                if(double.TryParse(value.ToString(), out rate))
                {
                    if (rate >= 66)
                    {
                        return Brush.Green;
                    }
                    else if (rate >= 60)
                    {
                        return Brush.Green;
                    }
                    else if (rate >= 54.5)
                    {
                        return Brush.Orange;
                    }
                    else if (rate <= 54.3)
                    {
                        return Brush.Red;
                    }
                }
            }
            return Brush.Red;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }

        public object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
    }
}

方法二:使用嵌套类的XAML引用语法

如果要保留嵌套类结构,XAML中需要用+符号引用内部类:

<local:RatingViewModel+RatingConverter x:Key="RatingColorChange" />

注:此写法可读性较差,优先推荐方法一。

2. 修复绑定后颜色无变化的问题

你的Rectangle绑定的是Rating属性,但当前RatingViewModel中未定义该属性,需要添加属性并实现通知:

namespace RatingAgency.ViewModels
{
    public class RatingViewModel: ViewModelBase
    {
        private double _rating;
        public double Rating
        {
            get { return _rating; }
            set { _rating = value; OnPropertyChanged(); }
        }

        // 保留原有其他代码...
    }
}

确保ViewModelBase正确实现了INotifyPropertyChanged接口,这样属性值变化时才能通知UI更新。

3. 优化转换器逻辑

转换器中rate >=66和rate >=60分支返回相同颜色,可合并简化;同时用强转替代字符串解析,提升可靠性:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    if (value is double rate)
    {
        if (rate >= 60)
        {
            return Brush.Green;
        }
        else if (rate >= 54.5)
        {
            return Brush.Orange;
        }
        else if (rate <= 54.3)
        {
            return Brush.Red;
        }
    }
    return Brush.Red;
}

4. 验证XAML引用正确性

确保XAML中的命名空间指向转换器所在的命名空间,资源定义无误:

<ContentPage.Resources>
    <local:RatingConverter x:Key="RatingColorChange" />
</ContentPage.Resources>

内容的提问来源于stack exchange,提问作者Kraytonian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:55:28