Data binding 我需要转换器来解析和绑定枚举吗
在我的数据库中,我有两个int类型的列(种类和优先级)。我还有一个带有种类和优先级值的枚举。但当我尝试将它们显示到GridViewColumn中时,它显示的是整数,而不是枚举值。我需要转换器吗这里是枚举:Data binding 我需要转换器来解析和绑定枚举吗,data-binding,xaml,enums,Data Binding,Xaml,Enums,在我的数据库中,我有两个int类型的列(种类和优先级)。我还有一个带有种类和优先级值的枚举。但当我尝试将它们显示到GridViewColumn中时,它显示的是整数,而不是枚举值。我需要转换器吗这里是枚举: public enum Kind { None = 0, Task = 1, Assignment = 2, Quiz = 3, Test = 4, Exam = 5, Project = 6, } public enum Priori
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}" />
如果优先级和种类属性声明为int类型,则是,您将需要一个转换器。WPF无法知道声明为整数的属性是否需要解释为枚举中的值
如果Priority和Kind属性分别声明为type 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强制转换为种类和优先级,或者使用int backing字段并在getter和setter中执行强制转换。如果您使用的是好的ORM,那么它应该能够为您解决这一问题。)我不确定您需要从一个示例中获得什么,但我已经扩展了答案,以显示您的数据库对象希望的外观。我考虑过使用IValueConverter?如果您确实希望将业务对象属性保留为int类型,那么您可以使用IValueConverter。在这种情况下,Convert方法的实现只是转换为int,然后转换为enum类型,例如
return(Priority)(int)值代码>。(由于装箱,您需要将强制转换为int。)