87 lines
2.5 KiB
C#
87 lines
2.5 KiB
C#
using System;
|
|
using System.Linq;
|
|
using DevExpress.Xpf.Editors;
|
|
using System.Windows;
|
|
using DevExpress.Xpf.Editors.Themes;
|
|
using DevExpress.Xpf.Editors.Helpers;
|
|
using DevExpress.Xpf.Core;
|
|
using System.Windows.Controls;
|
|
using DevExpress.Xpf.Editors.Popups;
|
|
using System.Windows.Data;
|
|
using DevExpress.Xpf.Editors.Internal;
|
|
|
|
namespace BeWo.View.Controls
|
|
{
|
|
public class EnumComboBoxStyleSettings : BaseComboBoxStyleSettings
|
|
{
|
|
public Type EnumType
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public override void ApplyToEdit(BaseEdit editor)
|
|
{
|
|
base.ApplyToEdit(editor);
|
|
var cb = editor as LookUpEditBase;
|
|
|
|
cb.ItemsSource = EnumHelper.GetEnumSource(EnumType, false);
|
|
cb.ItemTemplate = (DataTemplate)Application.Current.FindResource("whithAttributeItemTemplate");
|
|
cb.DisplayTextConverter = (IValueConverter)Application.Current.FindResource("enumToDescriptionConverter");
|
|
}
|
|
|
|
protected override Style GetItemContainerStyle(LookUpEditBase cb)
|
|
{
|
|
if (HasFlagsAttribute())
|
|
return (Style)cb.FindResource(new EditorListBoxThemeKeyExtension { ResourceKey = EditorListBoxThemeKeys.CheckBoxItemStyle, ThemeName = ThemeHelper.GetEditorThemeName(cb) });
|
|
return (Style)cb.FindResource(new EditorListBoxThemeKeyExtension { ResourceKey = EditorListBoxThemeKeys.DefaultItemStyle, ThemeName = ThemeHelper.GetEditorThemeName(cb) });
|
|
}
|
|
|
|
|
|
|
|
//protected override SelectionMode SelectionMode
|
|
//{
|
|
// get
|
|
// {
|
|
// return HasFlagsAttribute() ? SelectionMode.Multiple : SelectionMode.Single;
|
|
// }
|
|
//}
|
|
|
|
//protected override bool CloseOnMouseUp
|
|
//{
|
|
// get { return !HasFlagsAttribute(); }
|
|
//}
|
|
|
|
protected override bool ShowCustomItem(LookUpEditBase editor)
|
|
{
|
|
return HasFlagsAttribute();
|
|
}
|
|
|
|
protected override SelectionEventMode GetSelectionEventMode(ISelectorEdit ce)
|
|
{
|
|
if (HasFlagsAttribute())
|
|
return SelectionEventMode.MouseUp;
|
|
|
|
return !((LookUpEditBase)ce).AllowItemHighlighting ? SelectionEventMode.MouseDown : SelectionEventMode.MouseEnter;
|
|
}
|
|
|
|
public override PopupFooterButtons GetPopupFooterButtons(PopupBaseEdit editor)
|
|
{
|
|
return HasFlagsAttribute() ? PopupFooterButtons.OkCancel : PopupFooterButtons.None;
|
|
}
|
|
|
|
bool HasFlagsAttribute()
|
|
{
|
|
var fa = (FlagsAttribute[])EnumType.GetCustomAttributes(typeof(FlagsAttribute), true);
|
|
var c = fa.Count();
|
|
|
|
return c != 0;
|
|
}
|
|
|
|
protected override SelectionMode GetSelectionMode(LookUpEditBase editor)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
}
|