引用'值'传递给转换器的集合

本文关键字:转换器 集合 引用 | 更新日期: 2023-09-27 18:12:07

我很抱歉问一个非常基本的问题,但我正在努力在xaml页面背后的代码转换器。该转换器将根据数据元素中的值更改背景颜色。我知道我想要的数据元素是可用的,因为当我在执行转换器时中断调试时,我想要的值在"value"中。从VS2013的直接窗口,我显示"值"的内容,得到这个:

{VehicleTracks.ViewModels.vehicleViewModel}
base: {VehicleTracks.ViewModels.vehicleViewModel}
purchasedate: {7/14/2014 12:00:00 AM}
PurchaseDate: {7/14/2014 12:00:00 AM}
VehColor: "Chartreuse"
VehicleBitMap: null
vehiclebitmap: null
vehiclecolor: "Chartreuse"
vehiclemodel: "Algo"
vehmake: "Test Vehicle"
VehMake: "Test Vehicle"
VehType: "Auto"
vehtype: "Auto"
vehyear: "1908"
VehYear: "1908"

元素"VehType"是我想要的。我想根据它的值来改变背景颜色。您可以看到,在本例中它被设置为"Auto"。以下是我的转换器代码的适用部分:

    public sealed class ValueToColorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            SolidColorBrush blueBrush = new SolidColorBrush(Windows.UI.Colors.Blue);
            if (value[VehType] == "Auto")
            {
            return blueBrush;
            }
            else
            {
                SolidColorBrush greenBrush = new SolidColorBrush(Windows.UI.Colors.Green);
                return greenBrush;
            }
    }

我现在在那里的引用,值[VehType]没有得到它。我需要什么?

引用'值'传递给转换器的集合

你在那里滥用了索引器,这里有一篇文章可以帮助解释:在c#中使用索引器

你不能直接转换成VehicleTracks.ViewModels.vehicleViewModel吗?

using VehicleTracks.ViewModels;
// -----
var viewModel = (vehicleViewModel) value;
if (viewModel.VehType == "Auto")
{
    return blueBrush;
}