Отображение единицы измерения свойства в PropertyGrid (с использованием C #)

#c# #devexpress #propertygrid

#c# #devexpress #propertygrid

Вопрос:

Я показываю свойство под названием «Минимальная высота» в моей propertygrid. Это значение int из класса ViewModel, в котором оно определено. Однако, когда я показываю это, я хочу, чтобы рядом с ним отображалась единица измерения ‘dip’. Однако, как только пользователь нажимает на нее для редактирования, «dip» должен исчезнуть, и редактировать следует только номер int.

Приветствия!

Ответ №1:

DevExpress имеет разные сетки свойств — одну для платформы WinForms, другую для WPF. Оба они называются PropertyGridControl , поэтому трудно догадаться, о каком из них вы говорите. Решение зависит от платформы. Я опишу оба.

В платформе WinForms DevExpress поддерживает несколько подходов к форматированию, которые могут быть применены к редакторам или к конкретным элементам сложных элементов управления. Для вашей задачи удобно использовать подход, описанный в этой статье: Как: Добавить пользовательский текст в форматированную строку. То есть свойству FormatString можно присвоить текст, подобный этому: «{0} dip». Чтобы присвоить формат конкретной строке, используйте BaseRow.Свойства строк.Отформатируйте свойство.

В WPF вы можете реализовать пользовательский преобразователь значений и присвоить его определению свойств.Настройки редактирования.Свойство DisplayTextConverter. IValueConverter.Метод Convert будет автоматически вызываться каждый раз, когда сетке свойств необходимо узнать отображаемое значение. Поместите свой код в этот метод, чтобы добавить соответствующий текст к фактическому значению.

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