2010-01-31 55 views
2

在我的数据库中,我有一个2列(种类和优先级)是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

如果优先级和种类属性被声明为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 
} 

(当填充作业对象,你当然需要投出来的数据库来样和优先级的整数,或者你坚持一个int支持字段并执行如果你使用的是一个好的ORM,那么它应该能够为你处理这个问题。)

+0

你能发表一个样本吗? – 2010-02-02 02:05:59

+0

我不确定你需要从样本中得到什么,但我已经扩展了答案来显示你的数据库对象想要的样子。 – itowlson 2010-02-02 03:02:27

+0

我想过使用IValueConverter? – 2010-02-02 23:20:41