我希望(在 C# 中)使用 enumeration 的允许值填充组合框的允许值列表System.IO.Ports.Parity
。为此,我创建了一个集合:
public class theParitySource : ObservableCollection<Parity>
{
public theParitySource()
{
Array parities = System.Enum.GetValues( typeof( Parity ) );
foreach (Parity p in parities) this.Add(p);
}
}
(顺便说一句:这个初始化有oneliner吗?)并将其作为组合框的数据上下文:
...
xmlns:local="clr-namespace:myNamespace"
...
<ComboBox ...>
<ComboBox.DataContext>
<local:theParitySource />
</ComboBox.DataContext>
</ComboBox>
然而,组合框仍然是空的(它显示为空,但似乎具有正确的长度),即使我可以在调试器中看到如何theParitySource
填充。这种方法确实适用于另一个组合框(即使在同一个类中),我为波特率执行此操作。我用整数值初始化,所以我想这与我在这里使用枚举的事实有关,但我不知道可能是什么原因。任何指针?我需要写一个转换器吗?
(当然我可以通过从枚举中创建一个字符串列表来解决这个问题,但这会有点不愉快......)
编辑:实际上我更愿意在 XAML 中完成所有这些工作。有没有一种简单的方法可以做到这一点?