点击获取工具 >>
DevExpress WPF 领有 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>`