在我的数据库中,我有一个类型为int的2列(Kind和Priority)。我也有一个具有Kind和Priority值的枚举。但是当我尝试将它们显示到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}" />
答案 0 :(得分:1)
如果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 backing字段并在getter和setter中进行强制转换。如果您正在使用一个好的ORM然后它应该能够为你照顾这个。)