C# 将哈希表(System.Collection)的键和值映射到自定义属性

C# 将哈希表(System.Collection)的键和值映射到自定义属性,c#,wpf,data-binding,mapping,C#,Wpf,Data Binding,Mapping,我有一个哈希表(System.Collection)和一个自定义属性 默认值“_sendToDb”应该为false,稍后我将在wpf程序的网格中对此进行更改 这就是我所拥有的: 我的哈希表: Hashtable hsh = new Hashtable(); 我的财产: public class ImagesFromFS : INotifyPropertyChanged { string _value; string _path; bool _sendToDb;

我有一个哈希表(System.Collection)和一个自定义属性

默认值“_sendToDb”应该为false,稍后我将在wpf程序的网格中对此进行更改

这就是我所拥有的:

我的哈希表:

Hashtable hsh = new Hashtable();
我的财产:

public class ImagesFromFS : INotifyPropertyChanged
{

    string _value;
    string _path;
    bool _sendToDb;

   ...

    public string Path
    {
        get
        {
            return _path;
        }

        set
        {
            _path = value;
            onPropertyChanged();
        }
    }


    public bool SendToDb
    {
        get
        {
            return _sendToDb;
        }

        set
        {
            onPropertyChanged();
            _sendToDb = value;
        }
    }

    public string Value
    {
        get
        {
            return _value;
        }

        set
        {
            _value = value;
        }
    }
}

最终的目标应该是,将新创建的属性绑定到gridView。

为此,您应该使用转换器。根据传递给它的值返回路径

下面是一个基本转换器的演示,可以根据您的需要进行修改。它有Convert和ConvertBack两种方法。希望能有所帮助。:)


我不明白这个问题。你在哈希表中放了什么?为什么您要引用标题中同时包含键和值的哈希表?(它们只有值)。从2006年.NET 2.0问世时起,您应该使用
字典,而不是
哈希表。@Atoms不,它们既有键又有值。@Servy Bah,完全把自己和哈希集搞混了。
public class StatusConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        switch ((int)value)
        {
            case 1:
                return "Raised";
            case 2:
                return "Work in Progress";
            case 3:
                return "Resolved";
            case 4:
                return "Closed";
            default:
                return "undefined";
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        switch (value.ToString())
        {
            case "Raised":
                return 1;
            case "Work in Progress":
                return 2;
            case "Resolved":
                return 3;
            case "Closed":
                return 4;
            default: 
                return 0;
        }
    }
}