使用Enum填充GridVIewComboBox

时间:2015-03-17 15:54:40

标签: wpf

我有一个网格,当我加载网格时,它会填充“Active Records”。除枚举列外,每列都正确填充,枚举colkumn为空。我可以点击进入的组合框,并用枚举填充。

如果我能帮助设置枚举以便正确显示,请。

<telerik:GridViewComboBoxColumn Width="100" 
                                DataMemberBinding="{Binding Occurence}"                         
                                ItemsSource="{Binding Source={x:Type accounts:Insurance+Occurences}, Converter={StaticResource EnumToArrayConverter}}">
</telerik:GridViewComboBoxColumn>
<telerik:GridViewDataColumn Header="Rate" DataMemberBinding="{Binding Rate, StringFormat='#,##0.#0'}">
    <telerik:GridViewDataColumn.CellEditTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Rate, Mode=TwoWay, StringFormat='#,##0.#0', UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Right" />
        </DataTemplate>
    </telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>


<ObjectDataProvider x:Key="MyEnumDataProvider" MethodName="GetValues" ObjectType="{x:Type System:Enum}">
    <ObjectDataProvider.MethodParameters>
        <x:Type TypeName="accounts:InsuranceTypes"></x:Type>
    </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

EnumToArrayConverter来自WPF: How to populate combobox with enum in Xaml

“费率”列会填充,但枚举列仍为空。

1 个答案:

答案 0 :(得分:1)

以下代码将使用对象数据提供程序

解决它
<ObjectDataProvider MethodName="GetValues"
                ObjectType="{x:Type sys:Enum}"
                x:Key="EnumDataProvider">
<ObjectDataProvider.MethodParameters>
    <x:Type TypeName="local:SomeENUM" />
</ObjectDataProvider.MethodParameters>

然后使用数据列并覆盖其模板以在其中包含组合框并像这样绑定组合框

<telerik:GridViewDataColumn.CellTemplate>
            <DataTemplate>
                <ComboBox ItemsSource="{Binding Source={StaticResource EnumDataProvider}}"
      SelectedItem="{Binding selectedEnum}"/>
            </DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>