aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/SideChains/WpfExtendedToolKit/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownControlArea.cs
blob: 56ed807f6de0adce3a2ef84b1eacb70bfec04721 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*************************************************************************************

   Extended WPF Toolkit

   Copyright (C) 2007-2013 Xceed Software Inc.

   This program is provided to you under the terms of the Microsoft Public
   License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license 

   For more features, controls, and fast professional support,
   pick up the Plus Edition at http://xceed.com/wpf_toolkit

   Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

  ***********************************************************************************/

using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;

namespace Xceed.Wpf.AvalonDock.Controls
{
  public class DropDownControlArea : UserControl
  {
    #region Constructors

    //static DropDownControlArea()
    //{
    //    //IsHitTestVisibleProperty.OverrideMetadata(typeof(DropDownControlArea), new FrameworkPropertyMetadata(true));
    //}

    public DropDownControlArea()
    {
    }

    #endregion

    #region Properties

    #region DropDownContextMenu

    /// <summary>
    /// DropDownContextMenu Dependency Property
    /// </summary>
    public static readonly DependencyProperty DropDownContextMenuProperty = DependencyProperty.Register( "DropDownContextMenu", typeof( ContextMenu ), typeof( DropDownControlArea ),
            new FrameworkPropertyMetadata( ( ContextMenu )null ) );

    /// <summary>
    /// Gets or sets the DropDownContextMenu property.  This dependency property 
    /// indicates context menu to show when a right click is detected over the area occpied by the control.
    /// </summary>
    public ContextMenu DropDownContextMenu
    {
      get
      {
        return ( ContextMenu )GetValue( DropDownContextMenuProperty );
      }
      set
      {
        SetValue( DropDownContextMenuProperty, value );
      }
    }

    #endregion

    #region DropDownContextMenuDataContext

    /// <summary>
    /// DropDownContextMenuDataContext Dependency Property
    /// </summary>
    public static readonly DependencyProperty DropDownContextMenuDataContextProperty = DependencyProperty.Register( "DropDownContextMenuDataContext", typeof( object ), typeof( DropDownControlArea ),
            new FrameworkPropertyMetadata( ( object )null ) );

    /// <summary>
    /// Gets or sets the DropDownContextMenuDataContext property.  This dependency property 
    /// indicates data context to attach when context menu is shown.
    /// </summary>
    public object DropDownContextMenuDataContext
    {
      get
      {
        return ( object )GetValue( DropDownContextMenuDataContextProperty );
      }
      set
      {
        SetValue( DropDownContextMenuDataContextProperty, value );
      }
    }

    #endregion

    #endregion

    #region Overrides

    protected override void OnMouseRightButtonDown( System.Windows.Input.MouseButtonEventArgs e )
    {
      base.OnMouseRightButtonDown( e );
    }

    protected override void OnPreviewMouseRightButtonUp( System.Windows.Input.MouseButtonEventArgs e )
    {
      base.OnPreviewMouseRightButtonUp( e );

      if( !e.Handled )
      {
        if( DropDownContextMenu != null )
        {
          DropDownContextMenu.PlacementTarget = null;
          DropDownContextMenu.Placement = PlacementMode.MousePoint;
          DropDownContextMenu.DataContext = DropDownContextMenuDataContext;
          DropDownContextMenu.IsOpen = true;
          // e.Handled = true;
        }
      }
    }

    //protected override System.Windows.Media.HitTestResult HitTestCore(System.Windows.Media.PointHitTestParameters hitTestParameters)
    //{
    //    var hitResult = base.HitTestCore(hitTestParameters);
    //    if (hitResult == null)
    //        return new PointHitTestResult(this, hitTestParameters.HitPoint);

    //    return hitResult;
    //}

    #endregion
  }
}