DevExpress WPF Subscription拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。
问题
有一个用数据填充的GridControl和一个RadioListFilterElement,它引用网格为特定字段提供过滤器控件。 这可以正常工作,但是有一种情况需要RadioListFilterElement显示与实际过滤的值不同的值。 例如,有问题的字段称为StatusID,在数据库中可能的值为:
- 'A'
- 'D'
- 'S'
但是在RadioListFilterElement中,想像这样显示它们:
- 'Active'
- 'Deleted'
- 'Suspended'
可以在文本框或类似控件的上下文中通过简单地使用转换器来执行此操作,但是在FilterElement的情况下,无法找到使其工作的方法。
当前过滤器元素:
XAML
<dxfui:RadioListFilterElement Context="{Binding FilteringContext, ElementName=UserListingGrid}" FieldName="StatusID" > </dxfui:RadioListFilterElement>
当前过滤器元素:
C#
class UserStatusIDConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if(value != null) { if(value.ToString() == "A") { return "ACTIVE"; } if (value.ToString() == "D") { return "DELETED"; } if (value.ToString() == "S") { return "SUSPENDED"; } } return false; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if(value == null) { return false; } if(value.ToString() == "ACTIVE") { return "A"; } else if(value.ToString() == "DELETED") { return "D"; } else if (value.ToString() == "SUSPENDED") { return "S"; } return false; } }
解决方案
最简单的方法是为过滤器元素创建自定义表示形式,可以使用FilterModelTemplate属性来实现。 例如:
XAML
<dxfui:RadioListFilterElement Context="{Binding FilteringContext, ElementName=grid}" FieldName="Name"> <dxfui:RadioListFilterElement.FilterModelTemplate> <DataTemplate> <dxe:ListBoxEdit ItemsSource="{Binding FilterValues}" SelectedItem="{Binding SelectedFilterValue}" ShowCustomItems="True"> <dxe:ListBoxEdit.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Value, Converter={...}}" /> </DataTemplate> </dxe:ListBoxEdit.ItemTemplate> <dxe:ListBoxEdit.StyleSettings> <dxe:RadioListBoxEditStyleSettings /> </dxe:ListBoxEdit.StyleSettings> </dxe:ListBoxEdit> </DataTemplate> </dxfui:RadioListFilterElement.FilterModelTemplate> </dxfui:RadioListFilterElement>
DevExpress技术交流群3:700924826 欢迎一起进群讨论