Нужен ли конвертер для разбора и связывания перечисления? - PullRequest
2 голосов
/ 31 января 2010

В моей базе данных есть 2 столбца (Kind и Priority) типа int. У меня также есть перечисление со значениями Доброго и Приоритетного. Но когда я пытаюсь отобразить их в GridViewColumn, он показывает целые числа, а не значения перечисления. Нужен ли конвертер? Вот перечисления:

public enum Kind
{
    None = 0,
    Task = 1,
    Assignment = 2,
    Quiz = 3,
    Test = 4,
    Exam = 5,
    Project = 6,

}
public enum Priority
{
    None = 0,
    Low = 1,
    Medium = 2,
    High = 3,
    Top = 4,
}

И мой XAML:

<GridViewColumn x:Name="PriorityColumn" Header="Priority" Width="60" DisplayMemberBinding="{Binding Path=Priority}" />
<GridViewColumn x:Name="KindColumn" Header="Kind" Width="60" DisplayMemberBinding="{Binding Path=Kind}" />

1 Ответ

1 голос
/ 31 января 2010

Если свойства Priority и Kind объявлены как тип int, тогда да, вам понадобится конвертер. WPF не может знать, что свойства, объявленные как целочисленные, должны интерпретироваться как значения из перечислений.

Если свойства Priority и Kind объявлены как типы Priority и Kind соответственно, то они должны просто работать: WPF отображает перечисления, вызывая ToString () для них, что приводит к имени значения перечисления.

Например:

// As per your question
public enum Kind { ... }
public enum Priority { ... }

// Your database object
public class Job : INotifyPropertyChanged
{
  public Kind Kind { get ... set ... }             // note Kind not int
  public Priority Priority { get ... set ... }     // note Priority not int
}

(При заполнении объекта Job вам, разумеется, нужно будет преобразовать целые числа, выходящие из базы данных, в Kind и Priority, или вы придерживаетесь поля поддержки int и выполняете приведение в геттере и сеттере. Если вы используете хороший ORM, тогда он сможет позаботиться об этом за вас.)

...