Telerik UI for WPF?下载30天免费试用

创建一个自定义字段筛选器

如果你不喜欢在过滤UI中显示的默认字段筛选编辑器,你可以很容易地用你自己的替换它们。要做到这一点,你需要从GridViewDataColumn继承和覆盖CreateFieldFilterEditor方法。然后必须从该方法返回编辑器。您必须将编辑器的重要属性数据绑定到所调用的属性价值它驻留在它的DataContext上。你还需要在这个Binding上定义一个IValueConverter,它将能够转换FilterDescriptor。UnsetValue到编辑器的“空”值。当特殊的单例值FilterDescriptor。UnsetValue被赋给一个过滤器描述符,它会关闭它。因此,您的自定义字段过滤器编辑器将能够“清除”或“关闭”底层的FilterDescriptor。

示例1展示如何创建RadDateTimePicker并将其用作自定义字段筛选器编辑器。当然,在现实生活中,您不需要这样做,因为DateTime列自动提供RadDateTimePickers。这只是一个示例,说明如何连接您的自定义字段筛选编辑器。

例1:重写CreateFieldFilterEditor方法

公共类MyDateTimeColumn: Telerik.Windows.Controls.GridViewDataColumn {public override FrameworkElement CreateFieldFilterEditor() {Telerik.Windows.Controls.RadDateTimePicker dateTimePicker = new Telerik.Windows.Controls.RadDateTimePicker();//这个绑定将把你的编辑器的重要属性转移到过滤视图模型。绑定selectedValueBinding =新绑定("值");selectedValueBinding。模式= BindingMode。TwoWay; selectedValueBinding.FallbackValue = null; selectedValueBinding.Converter = new DateTimeFilterEditorConverter(); dateTimePicker.SetBinding(Telerik.Windows.Controls.RadDateTimePicker.SelectedValueProperty, selectedValueBinding); return dateTimePicker; } private class DateTimeFilterEditorConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (Object.Equals(value, Telerik.Windows.Data.FilterDescriptor.UnsetValue)) { // When the filter is turned off this is what your editor will get. return null; } return value; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) { // When your editor want to turn off the filter this is what it should return. return Telerik.Windows.Data.FilterDescriptor.UnsetValue; } return value; } } }
公共类MyDateTimeColumn继承了Telerik.Windows.Controls.GridViewDataColumn公共覆盖函数CreateFieldFilterEditor()作为FrameworkElement Dim dateTimePicker作为新的Telerik.Windows.Controls.RadDateTimePicker()这个绑定将把编辑器的重要属性转移到筛选视图模型。Dim selectedValueBinding As New Binding("Value") selectedValueBinding。模式= BindingMode。TwoWay selectedValueBinding。FallbackValue = Nothing selectedValueBinding。转换器=新的DateTimeFilterEditorConverter() dateTimePicker.SetBinding(Telerik.Windows.Controls.RadDateTimePicker. setbinding)。返回dateTimePicker结束函数私有类DateTimeFilterEditorConverter实现IValueConverter公共函数转换(值为对象,targetType为类型,参数为对象,文化为CultureInfo)作为对象实现IValueConverter。转换If [Object]。= (value, Telerik.Windows.Data.FilterDescriptor.UnsetValue)然后'当过滤器被关闭时,这是你的编辑器将得到的。返回什么结束If返回值结束函数公共函数ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object实现IValueConverter。当你的编辑器想要关闭过滤器时,这是它应该返回的。返回telererik . windows . data . filterdescriptor . unsetvalue结束If返回值结束函数结束类结束类

中可以查看完全可运行的示例创建一个自定义TimeSpanPickerColumnKB文章。

在本文中
Baidu
map