2022-09-19 09:16:33 +08:00
|
|
|
|
using System;
|
2022-09-26 10:49:29 +08:00
|
|
|
|
using System.Collections;
|
2022-09-19 09:16:33 +08:00
|
|
|
|
using System.Windows;
|
2022-09-26 10:49:29 +08:00
|
|
|
|
using System.Windows.Controls;
|
2022-09-19 09:16:33 +08:00
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
|
2022-10-20 09:56:25 +08:00
|
|
|
|
namespace MECF.Framework.UI.Client.RecipeEditorLib.DGExtension
|
2022-09-19 09:16:33 +08:00
|
|
|
|
{
|
|
|
|
|
public class XDataGrid : ExtendedGrid.Microsoft.Windows.Controls.DataGrid
|
|
|
|
|
{
|
2022-09-26 10:49:29 +08:00
|
|
|
|
#region Variables
|
|
|
|
|
|
|
|
|
|
public ScrollViewer ref_scrollviewer;
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Constructors
|
|
|
|
|
|
|
|
|
|
public XDataGrid()
|
|
|
|
|
{
|
|
|
|
|
SelectionChanged += OnSelectionChanged;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static readonly DependencyProperty SelectedItemsListProperty = DependencyProperty.Register(
|
|
|
|
|
nameof(SelectedItemsList), typeof(IList), typeof(XDataGrid), new PropertyMetadata(default(IList)));
|
|
|
|
|
|
|
|
|
|
public IList SelectedItemsList
|
|
|
|
|
{
|
|
|
|
|
get => (IList)GetValue(SelectedItemsListProperty);
|
|
|
|
|
set => SetValue(SelectedItemsListProperty, value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2022-09-19 09:16:33 +08:00
|
|
|
|
public static readonly DependencyProperty UseHorizontalScrollingProperty = DependencyProperty.RegisterAttached("UseHorizontalScrolling", typeof(bool), typeof(XDataGrid),
|
|
|
|
|
new PropertyMetadata(default(bool), UseHorizontalScrollingChangedCallback));
|
|
|
|
|
|
|
|
|
|
public bool UseHorizontalScrolling
|
|
|
|
|
{
|
2022-09-26 10:49:29 +08:00
|
|
|
|
get => (bool)GetValue(UseHorizontalScrollingProperty);
|
|
|
|
|
set => SetValue(UseHorizontalScrollingProperty, value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Methods
|
|
|
|
|
|
|
|
|
|
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
SelectedItemsList = SelectedItems;
|
2022-09-19 09:16:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
2022-09-26 10:49:29 +08:00
|
|
|
|
|
2022-09-19 09:16:33 +08:00
|
|
|
|
private void _UseHorizontalScrollingChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
|
|
|
|
|
{
|
2022-09-26 10:49:29 +08:00
|
|
|
|
PreviewMouseWheel += delegate(object sender, MouseWheelEventArgs args)
|
2022-09-19 09:16:33 +08:00
|
|
|
|
{
|
2022-09-26 10:49:29 +08:00
|
|
|
|
ScrollViewer scrollViewer = GetTemplateChild("DG_ScrollViewer") as ScrollViewer;
|
2022-09-19 09:16:33 +08:00
|
|
|
|
if (scrollViewer != null)
|
|
|
|
|
{
|
|
|
|
|
if (args.Delta > 0)
|
|
|
|
|
scrollViewer.LineLeft();
|
|
|
|
|
else
|
|
|
|
|
scrollViewer.LineRight();
|
|
|
|
|
}
|
2022-09-26 10:49:29 +08:00
|
|
|
|
ref_scrollviewer = scrollViewer;
|
2022-09-19 09:16:33 +08:00
|
|
|
|
args.Handled = true;
|
|
|
|
|
};
|
|
|
|
|
}
|
2022-09-26 10:49:29 +08:00
|
|
|
|
|
2022-09-19 09:16:33 +08:00
|
|
|
|
private static void UseHorizontalScrollingChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
|
|
|
|
|
{
|
|
|
|
|
XDataGrid datagrid = dependencyObject as XDataGrid;
|
|
|
|
|
|
|
|
|
|
if (datagrid == null)
|
|
|
|
|
throw new ArgumentException("Element is not an ItemsControl");
|
|
|
|
|
|
|
|
|
|
datagrid._UseHorizontalScrollingChangedCallback(dependencyObject, dependencyPropertyChangedEventArgs);
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-26 10:49:29 +08:00
|
|
|
|
public static void SetUseHorizontalScrolling(ItemsControl element, bool value)
|
2022-09-19 09:16:33 +08:00
|
|
|
|
{
|
|
|
|
|
element.SetValue(UseHorizontalScrollingProperty, value);
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-26 10:49:29 +08:00
|
|
|
|
public static bool GetUseHorizontalScrolling(ItemsControl element)
|
2022-09-19 09:16:33 +08:00
|
|
|
|
{
|
|
|
|
|
return (bool)element.GetValue(UseHorizontalScrollingProperty);
|
|
|
|
|
}
|
2022-09-26 10:49:29 +08:00
|
|
|
|
|
|
|
|
|
#endregion
|
2022-09-19 09:16:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|