如何在XAML的ComboBox中添加枚举类型的指定成员子集?
在XAML中为ComboBox添加枚举类型的成员子集
你需要用x:Static标记扩展直接引用枚举的静态成员,这就是等效于构造函数中手动Add操作的XAML写法:
<ComboBox Name="cboState"> <x:Static Member="core:InvoiceState.Ready" /> <x:Static Member="core:InvoiceState.Waiting" /> <x:Static Member="core:InvoiceState.Finished" /> </ComboBox>
为什么你之前的写法无效?
直接写<core:InvoiceState>Ready</core:InvoiceState>是错误的——枚举类型不能通过“元素+文本内容”的方式实例化。枚举的每个成员都是该枚举类型的静态常量实例,必须通过x:Static标记扩展来引用这些静态成员,才能正确加入ComboBox的Items集合。
可选复用方案
如果需要在多个地方复用这个枚举子集,可以把它定义在资源字典中:
<Window.Resources> <x:Array Type="core:InvoiceState" x:Key="SelectedInvoiceStates"> <x:Static Member="core:InvoiceState.Ready" /> <x:Static Member="core:InvoiceState.Waiting" /> <x:Static Member="core:InvoiceState.Finished" /> </x:Array> </Window.Resources> <!-- 绑定到资源 --> <ComboBox Name="cboState" ItemsSource="{StaticResource SelectedInvoiceStates}" />
内容的提问来源于stack exchange,提问作者Jonathan Gilbert
相关产品推荐
相关产品推荐

