将转换器应用于ComboBox的显示项

时间:2017-01-18 15:49:58

标签: c# wpf devexpress devexpress-wpf

我试图将转换器应用于ComboBoxEdit的显示项目

当我只使用ComboBoxEdit.ItemTemplate时它可以工作,但仅适用于Combobox中的Items,而不适用于所选的。一旦我应用了DisplayTemplate,它就会崩溃,并且错误无法转换类型" DevExpress.Xpf.Grid.EditGridCellData"到" System.Enum"。

<dxg:GridControl ItemsSource="{Binding SampleList}">
        <dxg:GridControl.Columns>
            <dxg:GridColumn Header="Name"
                            FieldName="Name"/>
            <dxg:GridColumn Header="Beschreibung"
                            FieldName="Description"/>
            <dxg:GridColumn Header="Kategorie"
                            FieldName="Category">

                <dxg:GridColumn.CellTemplate>
                    <DataTemplate>
                        <dxe:ComboBoxEdit ItemsSource="{Binding DataContext.CategoryList, ElementName=LicenseContainerRoot}"
                                          IsTextEditable="False"
                                          Name="PART_Editor">
                            <dxe:ComboBoxEdit.DisplayTemplate>
                                <ControlTemplate>
                                    <TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
                                </ControlTemplate>
                            </dxe:ComboBoxEdit.DisplayTemplate>
                            <dxe:ComboBoxEdit.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
                                </DataTemplate>
                            </dxe:ComboBoxEdit.ItemTemplate>
                        </dxe:ComboBoxEdit>
                    </DataTemplate>
                </dxg:GridColumn.CellTemplate>
            </dxg:GridColumn>
        </dxg:GridControl.Columns>
    </dxg:GridControl>

1 个答案:

答案 0 :(得分:0)

看来,调用转换器的可用数据上下文是EditGridCellData实例。你正在寻找EditGridCellData的DataObject属性中的枚举吗?

如果你有EnumDescriptionConverter的源代码,你可以在EnumDescriptionConverter.Convert上放置一个调试器断点(并确定传递的数据类型)。