Добавьте свойство к динамическому объекту, имя которого будет известно только во время выполнения

Я изучил документацию по динамическим объектам, но не смог найти решение своей текущей проблемы.

У меня есть этот код:

dynamic sampleObject = new ExpandoObject();

string columnName = checkBox.Content.ToString();

sampleObject.columName = myObservableCollection;

Теперь имя моего добавленного свойства будет columnName, но я бы хотел, чтобы оно было содержимым моего флажка.

Как мне это реализовать?

Спасибо

1 ответ

Решение

Используйте словарь именованных значений вместо динамических свойств.

Вы можете использовать Преобразователь словаря для привязки к определенным записям в словаре (используя значение параметра преобразователя в качестве ключа). Код ниже по этой ссылке

public class DictionaryItemConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var dict = value as Dictionary<string, string>;
        if (dict != null)
        {
            return dict[parameter as string];
        }
        throw new NotImplementedException();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Если вы добавляете столбцы в сетку с помощью кода, вам необходимо создать привязку с правильным параметром конвертера и конвертера имен.

Другие вопросы по тегам