• 界面开发控件DevExpress WPF开发指南


    下载DevExpress v20.2完整版 

    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中文网,获取第一手最新产品资讯!

    DevExpress技术交流群3:700924826      欢迎一起进群讨论

  • 相关阅读:
    js实现倒计时
    CSS解决ul下面最后一个li的margin
    js手动定时清除localStorage
    js应用中的小细节-时间戳的转换和input输入框有效数字
    javaScript将string转换成array,并将汉字按汉语拼音排序方法
    CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...
    移动端下拉刷新,向后台请求数据
    进程 线程 协程
    网络编程
    flask 2 进阶
  • 原文地址:https://www.cnblogs.com/AABBbaby/p/14333391.html
Copyright © 2020-2023  润新知