【发布时间】:2021-04-28 13:06:03
【问题描述】:
我有一个枚举类型,可以使用数据提供程序绑定到ComboBox,但我想忽略Count 成员。我使用Count 来检查数组的边界,这些数组的项数应与此枚举中存在的类型相同。
enum FingerType
{
Thumb, Index, Middle, Ring, Pink,
Count
}
我将此枚举绑定到ComboBox,如下所示:
<UserControl.Resources>
<ObjectDataProvider x:Key="dataFromEnum" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:FingerType"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</UserControl.Resources>
而ComboBox如下:
<ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}"/>
那么,我的问题是如何显示除最后一项以外的所有项目?
【问题讨论】:
-
听起来像XY problem,如果它是无效值,则首先不要有那个枚举值。
-
@Charlieface 不同意。在枚举中使用计数是一种常见的做法。
-
您可以编写
IValueConverter的实现并在绑定中使用它。 -
虽然我同意@Charlieface,但您应该考虑创建一个包含您想要的值的替代枚举,并为您建议的枚举创建一个转换器。
-
可能是常见的做法,但 SQL 注入和缓冲区溢出也是如此。如果错了,那就错了。
标签: c# wpf xaml combobox dataprovider