如何解决不显示 ComboBox 中的最后一项
我有一个可以使用数据提供程序绑定到 print(1)
的枚举类型,但我想忽略 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
那么,我的问题是如何显示除最后一项之外的所有项目?
解决方法
我认为您可以使用字典以不同的方式解决该问题。下面给出了 viewmodel 的示例 xaml 和 c# 代码。
XAML:
<ComboBox Grid.Row="2" Grid.Column="7" VerticalAlignment="Top"
ItemsSource="{Binding FingerTypes,Mode=TwoWay}"
SelectedValue="{Binding SelectedFingerType,Mode=TwoWay}"
SelectedValuePath="Key"
DisplayMemberPath="Value"
Height="22" Margin="0,3,0" />
C# 视图模型
#region Property FingerTypes: Dictionary<FingerType,string>
private Dictionary<FingerType,string> _FingerTypes;
public Dictionary<FingerType,string> FingerTypes
{
get
{
if (_FingerTypes != null) return _FingerTypes;
_FingerTypes = new Dictionary<FingerType,string>();
foreach (FingerType value in Enum.GetValues(typeof(FingerType)))
{
if (value != FingerType.Count)
_FingerTypes.Add(value,value.ToString());
}
return _FingerTypes;
}
}
#endregion
#region Property SelectedFingerType: ContractExpiryTypeEnum
private FingerType? _SelectedFingerType;
public FingerType? SelectedFingerType
{
get
{
return _SelectedFingerType;
}
set
{
_SelectedFingerType= value;
}
}
#endregion
注意:您也可以使用列表,但在 WPF、Silverlight 和 UWP 平台中使用字典对我有用。请检查代码并尝试并告诉我。
,我会在 ObjectDataProvider
中使用自己的 EnumHelper 并在其中应用过滤器。
删除枚举最后一个值的示例
public class EnumHelper
{
public Array FilterValues(Type enumType)
{
Array allValues = Enum.GetValues(enumType);
object[] filteredValues = new object[allValues.Length - 1];
for (int i = 0; i < allValues.Length-1; i++)
{
filteredValues[i] = allValues.GetValue(i);
}
return filteredValues;
}
}
在资源中修改了 ObjectDataProvider
:
<ObjectDataProvider x:Key="dataFromEnum" MethodName="FilterValues" ObjectType="{x:Type local:EnumHelper}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:FingerType"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。