none
Привязка, отображение и редактирование привязанных данных (WPF). RRS feed

  • Вопрос

  • Доброго времени суток!
    Пытаюсь разобраться с привязкой данных и моделью MVVM, реализованной в WPF на примере редактора данных в двоичной, десятичной и шестнадцатеричной системах счисления.
    Исходные данные: пусть для примера имеется класс Byte, хранящий представление байта:

    public class ByteImpl
    {
        public enum viewMode
        {
        viewBin,
        viewDec,
        viewHex
        }
        public viewMode currentViewMode { get; set; }
        public int Byte { get; set; }
    }

    Где свойство Byte - собственно наше представление байта, а currentViewMode - система счисления, в которой должен отображаться наш байт в DataGrid'e. Собственно с десятеричной системой проблем не происходит - всё работает из коробки, а вот с двоичной и шестнадцатеричной системами у меня затык. Хочется следующего: что бы при простом отображении данных чисто в DataGrid'е отображалось как b'101010010' в двоичной и как 0xfe в шестнадцатеричной системах счисления, а при переходе в режим редактирования все лишние префиксы и суффиксы убирались, т.е. двоичное число приводилось к виду 01001010, а шестнадцатеричное, соответственно, к fe. Почитав документацию с ходу придумалось такое решение: заводим обработчики событий DataGrid.PreparingCellForEdit и DataGrid.CellEditEnding, в первом убираем все суффиксы и префиксы, в зависимости от currentViewMode, во втором проводим проверку на валидность введенного значения, и если все хорошо, возвращаем префиксы и суффиксы обратно. Но что то мне подсказывает, что это решение совершенно не правильное и может претендовать на звание "костыль месяца". Ткните, пожалуйста, в каком направлении копать, а если еще и пример покажете, вообще замечательно будет.
    Ну и второй вопрос: как можно заставить DataGrid или ListView вместо стандартного редактора ячейки использовать свой контрол? Опять же на примере: пусть в ячейке / строке хранятся пути к директориям, хочется что бы при вызове строки на редактирование, кроме самой директории справа была кнопочка вызова диалога выбора директории.

    23 ноября 2012 г. 6:52

Ответы

  • Добрый день.

    Нет, если у вас MVVM, то там работает немного другой подход. Вот, посмотрите, но похоже это описание как раз вашего случая.

    P.s. Приведенный пример не на MVVM, но легко адаптируется под указанный паттерн.

    • Помечено в качестве ответа Renaz2 24 ноября 2012 г. 12:52
    23 ноября 2012 г. 11:52
    Отвечающий

Все ответы

  • Добрый день.

    Нет, если у вас MVVM, то там работает немного другой подход. Вот, посмотрите, но похоже это описание как раз вашего случая.

    P.s. Приведенный пример не на MVVM, но легко адаптируется под указанный паттерн.

    • Помечено в качестве ответа Renaz2 24 ноября 2012 г. 12:52
    23 ноября 2012 г. 11:52
    Отвечающий
  • Спасибо! DataTemlate + IValueConverter творят чудеса :) Сложно, конечно, во всё это въехать после Qt и его реализации паттерна MVC.
    24 ноября 2012 г. 12:58