mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
76 lines
3.0 KiB
C#
76 lines
3.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
|
|
namespace Util.DiagramDesigner
|
|
{
|
|
public static class SelectionProps
|
|
{
|
|
#region EnabledForSelection
|
|
|
|
public static readonly DependencyProperty EnabledForSelectionProperty =
|
|
DependencyProperty.RegisterAttached("EnabledForSelection", typeof(bool), typeof(SelectionProps),
|
|
new FrameworkPropertyMetadata((bool)false,
|
|
new PropertyChangedCallback(OnEnabledForSelectionChanged)));
|
|
|
|
public static bool GetEnabledForSelection(DependencyObject d)
|
|
{
|
|
return (bool)d.GetValue(EnabledForSelectionProperty);
|
|
}
|
|
|
|
public static void SetEnabledForSelection(DependencyObject d, bool value)
|
|
{
|
|
d.SetValue(EnabledForSelectionProperty, value);
|
|
}
|
|
|
|
private static void OnEnabledForSelectionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
FrameworkElement fe = (FrameworkElement)d;
|
|
if ((bool)e.NewValue)
|
|
{
|
|
fe.PreviewMouseDown += Fe_PreviewMouseDown;
|
|
}
|
|
else
|
|
{
|
|
fe.PreviewMouseDown -= Fe_PreviewMouseDown;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
static void Fe_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
|
{
|
|
SelectableDesignerItemViewModelBase selectableDesignerItemViewModelBase =
|
|
(SelectableDesignerItemViewModelBase)((FrameworkElement)sender).DataContext;
|
|
|
|
if(selectableDesignerItemViewModelBase != null && selectableDesignerItemViewModelBase.IsHitTestVisible)
|
|
{
|
|
if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None)
|
|
{
|
|
if ((Keyboard.Modifiers & (ModifierKeys.Shift)) != ModifierKeys.None)
|
|
{
|
|
selectableDesignerItemViewModelBase.IsSelected = !selectableDesignerItemViewModelBase.IsSelected;
|
|
}
|
|
|
|
if ((Keyboard.Modifiers & (ModifierKeys.Control)) != ModifierKeys.None)
|
|
{
|
|
selectableDesignerItemViewModelBase.IsSelected = !selectableDesignerItemViewModelBase.IsSelected;
|
|
}
|
|
}
|
|
else if (!selectableDesignerItemViewModelBase.IsSelected)
|
|
{
|
|
foreach (SelectableDesignerItemViewModelBase item in selectableDesignerItemViewModelBase.Parent.SelectedItems)
|
|
item.IsSelected = false;
|
|
|
|
selectableDesignerItemViewModelBase.Parent.SelectedItems.Clear();
|
|
//selectableDesignerItemViewModelBase.IsSelected = true;
|
|
selectableDesignerItemViewModelBase.Parent.SelectionService.AddToSelection(selectableDesignerItemViewModelBase);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|