通过转换器的DataGrid ComboBox条目

时间:2014-03-27 07:42:58

标签: wpf datagridcomboboxcolumn

快速WPF问题。 这是我的情况: 我有DataGridComboBoxColumn EnumItemsSource。 但当然我不想实际显示枚举值。 我有一个转换器,根据' Enum Item'在字典中查找相应的字符串。这一切都很好,也很好看。但是我必须在哪里申报转换器?

我试过了:

                <DataGridComboBoxColumn Width="120" Header="Expense.Column.FoodCode" ItemsSource="{Binding Source={StaticResource FoodCodes}}" SelectedItemBinding="{Binding FoodCode, Converter={StaticResource FoodCodeConverter}}" />

SelectedItemBinding显然是错误的地方。 DataGridComboBoxColumn的哪个属性负责显示的项目文本?

提前完成。

编辑: 到目前为止,我有:

<DataGridTemplateColumn Width="86" Header="Expense.Column.WageAccount" >
    <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding WageAccount, Converter={StaticResource WageAccountConverter}}"/>
</DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <ComboBox ItemsSource="{StaticResource WageAccounts}">
            <ComboBox.ItemTemplate>
        <DataTemplate>
        <TextBlock Text="{Binding Expenses.WaggeAccount, Converter={StaticResource WageAccountConverter}}"/>
    </DataTemplate>
        </ComboBox.ItemTemplate>
        </ComboBox>
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

2 个答案:

答案 0 :(得分:1)

好的,我觉得这对你来说已经足够了

MSDN本文为您提供有关DataGridComboBoxColumn Style

的样式的信息

以下是您如何使用它的示例。

此示例基于此问题WPF DataGridComboBoxColumn style

<dg:DataGridTemplateColumn Header="MyColumn">
<dg:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <ComboBox ... />
    </DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>

话虽如此,您还需要ComboBox StyleMSDN - ComboBox

最重要的是,当您执行ComboBoxStyle时,您可以使用转换器,因为项目的显示由ComboBox而不是DataGridComboBoxColumn处理。 HTH: - )

答案 1 :(得分:0)

行。终于我明白了!

                    <fpc:DataGridTemplateColumn Width="86" Header="Expense.Column.WageAccount" >
                    <fpc:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding WageAccount, Converter={StaticResource WageAccountConverter}}"/>
                        </DataTemplate>
                    </fpc:DataGridTemplateColumn.CellTemplate>
                    <fpc:DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <ComboBox ItemsSource="{StaticResource WageAccounts}">
                                <ComboBox.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel>
                                            <TextBlock Text="{Binding Converter={StaticResource WageAccountConverter}}"/>
                                        </StackPanel>
                                    </DataTemplate>
                                </ComboBox.ItemTemplate>
                            </ComboBox>
                        </DataTemplate>
                    </fpc:DataGridTemplateColumn.CellEditingTemplate>
                </fpc:DataGridTemplateColumn>

它基本上是我在原始问题的编辑中发布的一个小差异 线:

<TextBlock Text="{Binding Expenses.WageAccount, Converter={StaticResource WageAccountConverter}}"/>

更改为:

<TextBlock Text="{Binding Converter={StaticResource WageAccountConverter}}"/>