快速WPF问题。
这是我的情况:
我有DataGridComboBoxColumn
Enum
为ItemsSource
。
但当然我不想实际显示枚举值。
我有一个转换器,根据' 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>
答案 0 :(得分:1)
好的,我觉得这对你来说已经足够了
MSDN本文为您提供有关DataGridComboBoxColumn Style
以下是您如何使用它的示例。
此示例基于此问题WPF DataGridComboBoxColumn style
<dg:DataGridTemplateColumn Header="MyColumn">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ... />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
话虽如此,您还需要ComboBox Style
,MSDN - 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}}"/>