Nano Hash - криптовалюты, майнинг, программирование

Редактирование разных типов объектов с использованием разных элементов управления в столбце Wpf Datagrid Column

Мне нужно создать привязку Wpf Datagrid из ObservableCollection с дюжиной словаря, где строка — это имя свойства, а объект — значение свойства. Каждый объект может быть разного типа, он может быть логическим (флажок), строковым (текстовое поле), CustomClassObject (поле со списком или текстовое поле), целым числом (текстовое поле) или перечислением (поле со списком с каждым значением из перечисления).

И он должен заполняться динамически.

Я пытаюсь понять это с прошлой недели, но это просто сложно.

У вас есть идея, как создать такую ​​​​сетку данных, которая решит эту проблему? Как связать, например, список объектов, извлеченных из словаря или всего словаря, с сеткой данных, чтобы пользователь мог легко его редактировать?

Должен ли я использовать datatemplate с некоторыми преобразователями, если это возможно, которые вернут правильный элемент управления с соответствующим значением для каждого объекта. Или я должен создать пользовательский элемент управления, который будет состоять из привязываемого объекта свойства, которому я назначу полное поле управления правами для каждого значения, и оно будет привязано к ContentControl?

Буду благодарен за каждую подсказку.

Спасибо

03.08.2015

  • Если вы используете словарь, как вы говорите, у вас может быть только 1 строка данных...? Если только вы не предлагаете иметь коллекцию словарей!? 03.08.2015
  • Да, вы правы, у меня есть коллекция словарей. Спасибо, Глен. 03.08.2015
  • Это необходимо? Вы не знаете, какие столбцы будут во время компиляции? 03.08.2015
  • Два столбца: имя свойства и значение свойства. Наполняется из этого сборника словарей 03.08.2015

Ответы:


1

Возможно что-то вроде этого:

public class MyObjectList : ObservableCollection<object>
{
    public MyObjectList()
    {
        Add(new KeyValuePair<string, int>("Key1", 1));
        Add(new KeyValuePair<string, string>("Key2", "Value2"));
        Add(new KeyValuePair<string, bool>("Key3", true));
        Add(new KeyValuePair<string, double>("Key4", 1.5));
        Add(new KeyValuePair<string, MyEnum>("Key5", MyEnum.OPTION3));
        Add(new KeyValuePair<string, MyCustomClass>("Key6", new MyCustomClass(123)));
    }
}

public class MyCustomClass
{
    int value;

    public MyCustomClass(int value)
    {
        this.value = value;
    }
    public override string ToString()
    {
        return string.Format("MyCustomClass is {0}", value);
    }
}

enum MyEnum { OPTION1, OPTION2, OPTION3 };

XAML:

    <DataGrid Margin="0" ItemsSource="{Binding Mode=OneWay}">
        <DataGrid.DataContext>
            <local:MyObjectList/>
        </DataGrid.DataContext>
    </DataGrid>

Результат:

введите здесь описание изображения

03.08.2015
  • Спасибо jstreet за ответ, но при таком подходе я думаю, что хочу иметь возможность редактировать эти значения. Я могу только показать их на экране. 05.08.2015
  • Как бы то ни было, вы уже можете редактировать все встроенные типы, такие как string, int, bool, double, возможно, enum (не пробовал). Для любого пользовательского класса, такого как MyCustomClass, вы можете использовать PropertyGrid. 05.08.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..