您所要求的并不难实现:XceedPropertyGrid
是高度可定制的,并且可以使用ITypeEditor接口和Editor属性来定制属性编辑器。
首先我们需要定义一个自定义的编辑器控件:
public class DateTimePickerEditor : DateTimePicker, ITypeEditor
{
public DateTimePickerEditor()
{
Format = DateTimeFormat.Custom;
FormatString = "dd.MM.yyyy";
TimePickerVisibility = System.Windows.Visibility.Collapsed;
ShowButtonSpinner = false;
AutoCloseCalendar = true;
}
public FrameworkElement ResolveEditor(PropertyItem propertyItem)
{
Binding binding = new Binding("Value");
binding.Source = propertyItem;
binding.Mode = propertyItem.IsReadOnly ? BindingMode.OneWay : BindingMode.TwoWay;
BindingOperations.SetBinding(this, ValueProperty, binding);
return this;
}
}
构造函数中的所有内容都是为了获得特定的行为(即没有时间控制、特定的日期格式等)。
现在我们需要将DateTimePickerEditor
对象属性设置为默认编辑器(在我们的示例中称为“日期”):
[Category("General")]
[DisplayName("Date")]
[PropertyOrder(2)]
[Editor(typeof(DateTimePickerEditor), typeof(DateTimePicker))]
public Nullable<DateTime> Date
我希望它有所帮助。