Browse Source

Merge pull request #2 from apd-communications/dev/Update-APD-toolkit-Fork-To-Master

Dev/update apd toolkit fork to master
pull/1692/head^2
iamcjbrown 5 years ago
committed by GitHub
parent
commit
67df20de65
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AeroColors.cs
  2. 30
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AeroTheme.cs
  3. 32
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfo.cs
  4. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfoCommon.cs
  5. 11
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Brushes.xaml
  6. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Controls/SplineBorder.cs
  7. 15
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Properties/AssemblyInfo.cs
  8. 507
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml
  9. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Xceed.Wpf.AvalonDock.Themes.Aero.csproj
  10. 62
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Debug/GeneratedInternalTypeHelper.g.i.cs
  11. 32
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfo.cs
  12. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfoCommon.cs
  13. 11
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Brushes.xaml
  14. 30
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/MetroTheme.cs
  15. 15
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Properties/AssemblyInfo.cs
  16. 531
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml
  17. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Xceed.Wpf.AvalonDock.Themes.Metro.csproj
  18. 32
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/AssemblyVersionInfo.cs
  19. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/AssemblyVersionInfoCommon.cs
  20. 11
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Brushes.xaml
  21. 15
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Properties/AssemblyInfo.cs
  22. 508
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml
  23. 30
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/VS2010Theme.cs
  24. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Xceed.Wpf.AvalonDock.Themes.VS2010.csproj
  25. 32
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/AssemblyVersionInfo.cs
  26. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/AssemblyVersionInfoCommon.cs
  27. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Commands/RelayCommand.cs
  28. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneControlOverlayArea.cs
  29. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneDropTarget.cs
  30. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTabPanel.cs
  31. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTitle.cs
  32. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AutoHideWindowManager.cs
  33. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/BindingHelper.cs
  34. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/ContextMenuEx.cs
  35. 66
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DockingManagerDropTarget.cs
  36. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DockingManagerOverlayArea.cs
  37. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneControlOverlayArea.cs
  38. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropAsAnchorableTarget.cs
  39. 103
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs
  40. 18
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneGroupDropTarget.cs
  41. 19
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneTabPanel.cs
  42. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DragService.cs
  43. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropArea.cs
  44. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownButton.cs
  45. 15
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownControlArea.cs
  46. 23
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTarget.cs
  47. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTargetBase.cs
  48. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTargetType.cs
  49. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Extentions.cs
  50. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/FocusElementManager.cs
  51. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/FullWeakDictionary.cs
  52. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IDropTarget.cs
  53. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IOverlayWindow.cs
  54. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IOverlayWindowArea.cs
  55. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IOverlayWindowDropTarget.cs
  56. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IOverlayWindowHost.cs
  57. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorControl.cs
  58. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorGroupControl.cs
  59. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorSideControl.cs
  60. 35
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableControl.cs
  61. 221
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs
  62. 24
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableItem.cs
  63. 52
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs
  64. 15
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneGroupControl.cs
  65. 31
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableTabItem.cs
  66. 46
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAutoHideWindowControl.cs
  67. 104
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutCachePaneControl.cs
  68. 82
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentControl.cs
  69. 56
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs
  70. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentItem.cs
  71. 60
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneControl.cs
  72. 16
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneGroupControl.cs
  73. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentTabItem.cs
  74. 359
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs
  75. 92
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs
  76. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridResizerControl.cs
  77. 59
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutItem.cs
  78. 75
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutPanelControl.cs
  79. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/MenuItemEx.cs
  80. 209
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/NavigatorWindow.cs
  81. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/OverlayArea.cs
  82. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/OverlayWindow.cs
  83. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/OverlayWindowDropTarget.cs
  84. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/OverlayWindowDropTargetType.cs
  85. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/ReentrantFlag.cs
  86. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/ComGuids.cs
  87. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/Debug.cs
  88. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/DoubleUtil.cs
  89. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/DpiHelper.cs
  90. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/ErrorCodes.cs
  91. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/MessageWindow.cs
  92. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/NativeMethods.cs
  93. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/ShellProvider.cs
  94. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/StreamHelper.cs
  95. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/Utilities.cs
  96. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/Verify.cs
  97. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/SystemCommands.cs
  98. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/SystemParameters2.cs
  99. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/WindowChrome.cs
  100. 13
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/WindowChromeWorker.cs

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AeroColors.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

30
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AeroTheme.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -21,13 +22,16 @@ using System.Text;
namespace Xceed.Wpf.AvalonDock.Themes
{
public class AeroTheme : Theme
public class AeroTheme : Theme
{
public override Uri GetResourceUri()
{
public override Uri GetResourceUri()
{
return new Uri(
"/Xceed.Wpf.AvalonDock.Themes.Aero;component/Theme.xaml",
UriKind.Relative);
}
string assemblyName = "Xceed.Wpf.AvalonDock.Themes.Aero";
return new Uri(
"/" + assemblyName + ";component/Theme.xaml",
UriKind.Relative );
}
}
}

32
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfo.cs

@ -1,32 +0,0 @@
/*************************************************************************************
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
***********************************************************************************/
#pragma warning disable 0436
[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
#pragma warning restore 0436
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string BaseVersion = "3.5";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string PublicKeyToken = "ba83ff368b7563c6";
}

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfoCommon.cs

@ -1,22 +0,0 @@
/*************************************************************************************
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
***********************************************************************************/
internal static class _XceedVersionInfoCommon
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Build = ".*";
}

11
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Brushes.xaml

@ -1,14 +1,15 @@
<!--***********************************************************************************
Extended WPF Toolkit
Toolkit for WPF
Copyright (C) 2007-2013 Xceed Software Inc.
Copyright (C) 2007-2020 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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Controls/SplineBorder.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

15
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Properties/AssemblyInfo.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -30,7 +31,7 @@ using System;
[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2017" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2020" )]

507
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml

@ -1,14 +1,15 @@
<!--***********************************************************************************
Extended WPF Toolkit
Toolkit for WPF
Copyright (C) 2007-2013 Xceed Software Inc.
Copyright (C) 2007-2020 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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -16,15 +17,13 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localThemes="clr-namespace:Xceed.Wpf.AvalonDock.Themes"
xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDock="clr-namespace:Xceed.Wpf.AvalonDock;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockLayout="clr-namespace:Xceed.Wpf.AvalonDock.Layout;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockControls="clr-namespace:Xceed.Wpf.AvalonDock.Controls;assembly=Xceed.Wpf.AvalonDock"
xmlns:shell="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDock="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockControls="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockAero="clr-namespace:Xceed.Wpf.AvalonDock.Themes"
xmlns:avalonDockThemeControls="clr-namespace:Xceed.Wpf.AvalonDock.Themes.Controls"
xmlns:avalonDockConverters="clr-namespace:Xceed.Wpf.AvalonDock.Converters;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockProperties="clr-namespace:Xceed.Wpf.AvalonDock.Properties;assembly=Xceed.Wpf.AvalonDock">
xmlns:avalonDockConverters="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockProperties="http://schemas.xceed.com/wpf/xaml/avalondock">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Brushes.xaml" />
@ -39,6 +38,14 @@
<avalonDockConverters:ActivateCommandLayoutItemFromLayoutModelConverter x:Key="ActivateCommandLayoutItemFromLayoutModelConverter" />
<avalonDockConverters:AnchorableContextMenuHideVisibilityConverter x:Key="AnchorableContextMenuHideVisibilityConverter" />
<DataTemplate x:Key="DocumentPaneControlContentTemplate">
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
</DataTemplate>
<DataTemplate x:Key="AnchorablePaneControlContentTemplate">
<avalonDockControls:LayoutAnchorableControl Model="{Binding}" />
</DataTemplate>
<!--DocumentPaneControlStyle-->
<Style x:Key="AvalonDock_ThemeAero_DocumentPaneControlStyle"
TargetType="{x:Type avalonDockControls:LayoutDocumentPaneControl}">
@ -72,7 +79,8 @@
IsItemsHost="true"
Margin="4,0,16,0"
Grid.Row="0"
KeyboardNavigation.TabIndex="1" />
KeyboardNavigation.TabIndex="1"
KeyboardNavigation.DirectionalNavigation="Cycle"/>
<avalonDockControls:DropDownButton x:Name="MenuDropDownButton"
Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"
Focusable="False"
@ -202,8 +210,7 @@
BorderThickness="0,1,1,0"
CornerRadius="0,2,0,0">
<Border x:Name="BdInternal"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}">
Background="{TemplateBinding Background}">
<ContentPresenter x:Name="Content"
ContentSource="Header"
HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
@ -276,13 +283,9 @@
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate"
Value="{StaticResource DocumentPaneControlContentTemplate}" />
</Style>
<!--AnchorablePaneControlStyle-->
@ -328,6 +331,7 @@
IsItemsHost="true"
Grid.Row="1"
KeyboardNavigation.TabIndex="1"
KeyboardNavigation.DirectionalNavigation="Cycle"
Panel.ZIndex="1" />
</Grid>
<ControlTemplate.Triggers>
@ -369,8 +373,7 @@
<Border x:Name="Bd"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1,0,1,1"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}">
Background="{TemplateBinding Background}">
<ContentPresenter x:Name="Content"
ContentSource="Header"
HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
@ -437,13 +440,9 @@
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<avalonDockControls:LayoutAnchorableControl Model="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate"
Value="{StaticResource AnchorablePaneControlContentTemplate}" />
</Style>
<Style TargetType="avalonDockControls:AnchorablePaneTitle">
@ -508,7 +507,7 @@
HorizontalAlignment="Center"
Command="{Binding Path=LayoutItem.HideCommand, RelativeSource={RelativeSource TemplatedParent}}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}">
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_Hide}">
<Image x:Name="PART_ImgHidePin"
Source="Images/PinClose_Dark.png" >
</Image>
@ -613,8 +612,8 @@
Margin="0,4,0,0"
Padding="2">
<ContentPresenter Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
ContentTemplate="{Binding Model.Root.Manager.AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Side"
@ -1157,11 +1156,14 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutDocumentTabItem}">
<!--Use a transparent background to hit for contextMenu popup-->
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Root.Manager.DocumentContextMenu}"
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
Background="Transparent">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
BorderThickness="{TemplateBinding BorderThickness}"
Margin="{Binding Padding, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@ -1171,8 +1173,8 @@
<Border Grid.ColumnSpan="3"
Background="Transparent" />
<ContentPresenter Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding DocumentHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding DocumentHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
ContentTemplate="{Binding Root.Manager.DocumentHeaderTemplate, Mode=OneWay}"
ContentTemplateSelector="{Binding Root.Manager.DocumentHeaderTemplateSelector, Mode=OneWay}" />
<!-- Close button should be moved out to the container style -->
<Button x:Name="DocumentCloseButton"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
@ -1233,19 +1235,18 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutAnchorableTabItem}">
<!--Use a transparent background to hit for contextMenu popup-->
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Root.Manager.AnchorableContextMenu}"
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
Background="Transparent">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
BorderThickness="{TemplateBinding BorderThickness}"
Margin="{Binding Padding, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}">
<Grid>
<ContentPresenter Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
<avalonDockControls:DropDownControlArea Grid.Column="0"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=Model, RelativeSource={RelativeSource TemplatedParent}}" >
</avalonDockControls:DropDownControlArea>
ContentTemplate="{Binding Root.Manager.AnchorableHeaderTemplate, Mode=OneWay}"
ContentTemplateSelector="{Binding Root.Manager.AnchorableHeaderTemplateSelector, Mode=OneWay}" />
</Grid>
</Border>
</avalonDockControls:DropDownControlArea>
@ -1273,7 +1274,9 @@
</Border>
<ContentPresenter Grid.Row="1"
FlowDirection="{TemplateBinding FlowDirection}"
Content="{Binding LayoutItem.View.Content, RelativeSource={RelativeSource TemplatedParent}}" />
Content="{Binding LayoutItem.View.Content, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding LayoutItem.View.ContentTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding LayoutItem.View.ContentTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<!--<ContentPresenter
Content="{Binding Model.Content, RelativeSource={RelativeSource TemplatedParent}}"
@ -1320,99 +1323,102 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutDocumentFloatingWindowControl}">
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid Margin="3">
<Grid.RowDefinitions>
<RowDefinition Height="18" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
Padding="2,0,2,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter Content="{Binding Model.RootDocument, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.DocumentTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.DocumentTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<avalonDockControls:DropDownButton x:Name="ContextMenuDropdownButton"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.DocumentContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=RootDocumentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu_Dark.png"
Width="13" >
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize_Dark.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore_Dark.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding Path=RootDocumentLayoutItem.CloseCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_Close}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose_Dark.png"
Width="13" >
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
<AdornerDecorator>
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid Margin="3">
<Grid.RowDefinitions>
<RowDefinition MinHeight="18"
Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
Padding="2,0,2,0">
<Grid UseLayoutRounding="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter Content="{Binding Model.RootDocument, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.DocumentTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.DocumentTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<avalonDockControls:DropDownButton x:Name="ContextMenuDropdownButton"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.DocumentContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=RootDocumentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu_Dark.png"
Width="13">
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize_Dark.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore_Dark.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding Path=RootDocumentLayoutItem.CloseCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_Close}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose_Dark.png"
Width="13">
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
</AdornerDecorator>
<ControlTemplate.Triggers>
<Trigger Property="WindowState"
Value="Maximized">
@ -1493,115 +1499,118 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutAnchorableFloatingWindowControl}">
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="18" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
CornerRadius="1,1,0,0"
Padding="2,0,2,0"
Background="{DynamicResource {x:Static avalonDockAero:AeroColors.BaseColor16Key}}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}">
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter Content="{Binding Model.SinglePane.SelectedContent, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.AnchorableTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
</avalonDockControls:DropDownControlArea>
</Border>
<avalonDockControls:DropDownButton x:Name="SinglePaneContextMenu"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu_Dark.png"
Width="13" >
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize_Dark.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore_Dark.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding HideWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose_Dark.png"
Width="13" >
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
<AdornerDecorator>
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition MinHeight="18"
Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
CornerRadius="1,1,0,0"
Padding="2,0,2,0"
Background="{DynamicResource {x:Static avalonDockAero:AeroColors.BaseColor16Key}}">
<Grid UseLayoutRounding="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}">
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter Content="{Binding Model.SinglePane.SelectedContent, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.AnchorableTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
</avalonDockControls:DropDownControlArea>
</Border>
<avalonDockControls:DropDownButton x:Name="SinglePaneContextMenu"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu_Dark.png"
Width="13">
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize_Dark.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore_Dark.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding HideWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose_Dark.png"
Width="13">
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
</AdornerDecorator>
<ControlTemplate.Triggers>
<Trigger Property="WindowState"
Value="Maximized">

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Xceed.Wpf.AvalonDock.Themes.Aero.csproj

@ -49,9 +49,13 @@
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\Xceed.Wpf.Toolkit\AssemblyVersionInfo.cs">
<Link>AssemblyVersionInfo.cs</Link>
</Compile>
<Compile Include="..\Xceed.Wpf.Toolkit\AssemblyVersionInfoCommon.cs">
<Link>AssemblyVersionInfoCommon.cs</Link>
</Compile>
<Compile Include="AeroColors.cs" />
<Compile Include="AssemblyVersionInfo.cs" />
<Compile Include="AssemblyVersionInfoCommon.cs" />
<Compile Include="Controls\SplineBorder.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
@ -184,11 +188,11 @@
<Resource Include="Images\PinDocMenu_Dark.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>

62
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Debug/GeneratedInternalTypeHelper.g.i.cs

@ -1,62 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace XamlGeneratedNamespace {
/// <summary>
/// GeneratedInternalTypeHelper
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
/// <summary>
/// CreateInstance
/// </summary>
protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
| (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
}
/// <summary>
/// GetPropertyValue
/// </summary>
protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// SetPropertyValue
/// </summary>
protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// CreateDelegate
/// </summary>
protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
| (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
delegateType,
handler}, null)));
}
/// <summary>
/// AddEventHandler
/// </summary>
protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
eventInfo.AddEventHandler(target, handler);
}
}
}

32
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfo.cs

@ -1,32 +0,0 @@
/*************************************************************************************
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
***********************************************************************************/
#pragma warning disable 0436
[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
#pragma warning restore 0436
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string BaseVersion = "3.5";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string PublicKeyToken = "ba83ff368b7563c6";
}

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfoCommon.cs

@ -1,22 +0,0 @@
/*************************************************************************************
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
***********************************************************************************/
internal static class _XceedVersionInfoCommon
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Build = ".*";
}

11
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Brushes.xaml

@ -1,14 +1,15 @@
<!--***********************************************************************************
Extended WPF Toolkit
Toolkit for WPF
Copyright (C) 2007-2013 Xceed Software Inc.
Copyright (C) 2007-2020 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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

30
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/MetroTheme.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -21,13 +22,16 @@ using System.Text;
namespace Xceed.Wpf.AvalonDock.Themes
{
public class MetroTheme : Theme
public class MetroTheme : Theme
{
public override Uri GetResourceUri()
{
public override Uri GetResourceUri()
{
return new Uri(
"/Xceed.Wpf.AvalonDock.Themes.Metro;component/Theme.xaml",
UriKind.Relative);
}
string assemblyName = "Xceed.Wpf.AvalonDock.Themes.Metro";
return new Uri(
"/" + assemblyName + ";component/Theme.xaml",
UriKind.Relative );
}
}
}

15
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Properties/AssemblyInfo.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -30,7 +31,7 @@ using System;
[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2017" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2020" )]

531
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml

@ -1,14 +1,15 @@
<!--***********************************************************************************
Extended WPF Toolkit
Toolkit for WPF
Copyright (C) 2007-2013 Xceed Software Inc.
Copyright (C) 2007-2020 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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -16,13 +17,11 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localThemes="clr-namespace:Xceed.Wpf.AvalonDock.Themes"
xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDock="clr-namespace:Xceed.Wpf.AvalonDock;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockLayout="clr-namespace:Xceed.Wpf.AvalonDock.Layout;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockControls="clr-namespace:Xceed.Wpf.AvalonDock.Controls;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockConverters="clr-namespace:Xceed.Wpf.AvalonDock.Converters;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockProperties="clr-namespace:Xceed.Wpf.AvalonDock.Properties;assembly=Xceed.Wpf.AvalonDock">
xmlns:shell="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDock="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockControls="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockConverters="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockProperties="http://schemas.xceed.com/wpf/xaml/avalondock">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Brushes.xaml" />
@ -37,6 +36,14 @@
<avalonDockConverters:ActivateCommandLayoutItemFromLayoutModelConverter x:Key="ActivateCommandLayoutItemFromLayoutModelConverter" />
<avalonDockConverters:AnchorableContextMenuHideVisibilityConverter x:Key="AnchorableContextMenuHideVisibilityConverter" />
<DataTemplate x:Key="DocumentPaneControlContentTemplate">
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
</DataTemplate>
<DataTemplate x:Key="AnchorablePaneControlContentTemplate">
<avalonDockControls:LayoutAnchorableControl Model="{Binding}" />
</DataTemplate>
<Style x:Key="AvalonDock_ThemeMetro_ToolButtonStyle"
TargetType="ToggleButton">
<Setter Property="Background"
@ -112,7 +119,8 @@
IsItemsHost="true"
Margin="2,0,2,0"
Grid.Row="0"
KeyboardNavigation.TabIndex="1" />
KeyboardNavigation.TabIndex="1"
KeyboardNavigation.DirectionalNavigation="Cycle" />
<avalonDockControls:DropDownButton x:Name="MenuDropDownButton"
Style="{StaticResource AvalonDock_ThemeMetro_ToolButtonStyle}"
Focusable="False"
@ -220,8 +228,7 @@
<Border x:Name="Bd"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="0,3,0,0"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}">
Background="{TemplateBinding Background}">
</Border>
<ContentPresenter x:Name="Content"
Margin="2"
@ -284,13 +291,9 @@
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate"
Value="{StaticResource DocumentPaneControlContentTemplate}" />
</Style>
<!--AnchorablePaneControlStyle-->
@ -338,6 +341,7 @@
IsItemsHost="true"
Grid.Row="1"
KeyboardNavigation.TabIndex="1"
KeyboardNavigation.DirectionalNavigation="Cycle"
Panel.ZIndex="1" />
</Grid>
<ControlTemplate.Triggers>
@ -378,8 +382,7 @@
BorderBrush="{TemplateBinding BorderBrush}"
Margin="4"
BorderThickness="0,2,0,0"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}">
Background="{TemplateBinding Background}">
<ContentPresenter x:Name="Content"
ContentSource="Header"
HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
@ -446,13 +449,9 @@
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<avalonDockControls:LayoutAnchorableControl Model="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate"
Value="{StaticResource AnchorablePaneControlContentTemplate}" />
</Style>
<Style TargetType="avalonDockControls:AnchorablePaneTitle">
@ -517,7 +516,7 @@
HorizontalAlignment="Center"
Command="{Binding Path=LayoutItem.HideCommand, RelativeSource={RelativeSource TemplatedParent}}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}">
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_Hide}">
<Image x:Name="PART_ImgHidePin"
Source="Images/PinClose.png" >
</Image>
@ -633,8 +632,8 @@
Padding="2">
<ContentPresenter TextElement.Foreground="{DynamicResource AvalonDock_ThemeMetro_BaseColor2}"
Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
ContentTemplate="{Binding Model.Root.Manager.AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Side"
@ -1180,12 +1179,15 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutDocumentTabItem}">
<!--Use a transparent background to hit for contextMenu popup-->
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Root.Manager.DocumentContextMenu}"
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
Background="Transparent">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="0,2,0,1">
Padding="0,2,0,1"
Margin="{Binding Padding, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@ -1195,8 +1197,8 @@
<Border Grid.ColumnSpan="3"
Background="Transparent" />
<ContentPresenter Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding DocumentHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding DocumentHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
ContentTemplate="{Binding Root.Manager.DocumentHeaderTemplate, Mode=OneWay}"
ContentTemplateSelector="{Binding Root.Manager.DocumentHeaderTemplateSelector, Mode=OneWay}" />
<!-- Close button should be moved out to the container style -->
<Button x:Name="DocumentCloseButton"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
@ -1277,19 +1279,18 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutAnchorableTabItem}">
<!--Use a transparent background to hit for contextMenu popup-->
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Root.Manager.AnchorableContextMenu}"
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
Background="Transparent">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
BorderThickness="{TemplateBinding BorderThickness}"
Margin="{Binding Padding, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}">
<Grid>
<ContentPresenter Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
<avalonDockControls:DropDownControlArea Grid.Column="0"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=Model, RelativeSource={RelativeSource TemplatedParent}}" >
</avalonDockControls:DropDownControlArea>
ContentTemplate="{Binding Root.Manager.AnchorableHeaderTemplate, Mode=OneWay}"
ContentTemplateSelector="{Binding Root.Manager.AnchorableHeaderTemplateSelector, Mode=OneWay}" />
</Grid>
</Border>
</avalonDockControls:DropDownControlArea>
@ -1316,7 +1317,9 @@
</Border>
<ContentPresenter Grid.Row="1"
FlowDirection="{TemplateBinding FlowDirection}"
Content="{Binding LayoutItem.View.Content, RelativeSource={RelativeSource TemplatedParent}}" />
Content="{Binding LayoutItem.View.Content, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding LayoutItem.View.ContentTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding LayoutItem.View.ContentTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<!--<ContentPresenter
Content="{Binding Model.Content, RelativeSource={RelativeSource TemplatedParent}}"
@ -1363,111 +1366,114 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutDocumentFloatingWindowControl}">
<Grid>
<Border x:Name="WindowBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="24" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border x:Name="bd"
Width="5"
VerticalAlignment="Stretch"
Background="{DynamicResource AvalonDock_ThemeMetro_BaseColor5}" />
<Border x:Name="Header"
Padding="2,0,2,0"
Grid.Column="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter Content="{Binding Model.RootDocument, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.DocumentTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.DocumentTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<avalonDockControls:DropDownButton x:Name="ContextMenuDropdownButton"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Style="{StaticResource AvalonDock_ThemeMetro_ToolButtonStyle}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.DocumentContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=RootDocumentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu.png"
Width="13">
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding Path=RootDocumentLayoutItem.CloseCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_Close}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose.png"
Width="13" >
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1"
Grid.ColumnSpan="2" />
</Grid>
</Border>
</Grid>
<AdornerDecorator>
<Grid>
<Border x:Name="WindowBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition MinHeight="24"
Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border x:Name="bd"
Width="5"
VerticalAlignment="Stretch"
Background="{DynamicResource AvalonDock_ThemeMetro_BaseColor5}" />
<Border x:Name="Header"
Padding="2,0,2,0"
Grid.Column="1">
<Grid UseLayoutRounding="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter Content="{Binding Model.RootDocument, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.DocumentTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.DocumentTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<avalonDockControls:DropDownButton x:Name="ContextMenuDropdownButton"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Style="{StaticResource AvalonDock_ThemeMetro_ToolButtonStyle}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.DocumentContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=RootDocumentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu.png"
Width="13">
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding Path=RootDocumentLayoutItem.CloseCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_Close}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose.png"
Width="13">
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1"
Grid.ColumnSpan="2" />
</Grid>
</Border>
</Grid>
</AdornerDecorator>
<ControlTemplate.Triggers>
<Trigger Property="WindowState"
Value="Maximized">
@ -1550,115 +1556,118 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutAnchorableFloatingWindowControl}">
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="24" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
Padding="2,0,2,0"
TextElement.Foreground="{DynamicResource AvalonDock_ThemeMetro_BaseColor2}"
Background="{TemplateBinding Background}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}">
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter Content="{Binding Model.SinglePane.SelectedContent, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.AnchorableTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
</avalonDockControls:DropDownControlArea>
</Border>
<avalonDockControls:DropDownButton x:Name="SinglePaneContextMenu"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ToolButtonStyle}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu.png"
Width="13" >
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding HideWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose.png"
Width="13" >
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
<AdornerDecorator>
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition MinHeight="24"
Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
Padding="2,0,2,0"
TextElement.Foreground="{DynamicResource AvalonDock_ThemeMetro_BaseColor2}"
Background="{TemplateBinding Background}">
<Grid UseLayoutRounding="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}">
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter Content="{Binding Model.SinglePane.SelectedContent, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.AnchorableTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
</avalonDockControls:DropDownControlArea>
</Border>
<avalonDockControls:DropDownButton x:Name="SinglePaneContextMenu"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ToolButtonStyle}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu.png"
Width="13">
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource AvalonDock_ThemeMetro_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding HideWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose.png"
Width="13">
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
</AdornerDecorator>
<ControlTemplate.Triggers>
<Trigger Property="WindowState"
Value="Maximized">

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Xceed.Wpf.AvalonDock.Themes.Metro.csproj

@ -49,8 +49,12 @@
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyVersionInfo.cs" />
<Compile Include="AssemblyVersionInfoCommon.cs" />
<Compile Include="..\Xceed.Wpf.Toolkit\AssemblyVersionInfo.cs">
<Link>AssemblyVersionInfo.cs</Link>
</Compile>
<Compile Include="..\Xceed.Wpf.Toolkit\AssemblyVersionInfoCommon.cs">
<Link>AssemblyVersionInfoCommon.cs</Link>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
@ -111,11 +115,11 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>

32
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/AssemblyVersionInfo.cs

@ -1,32 +0,0 @@
/*************************************************************************************
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
***********************************************************************************/
#pragma warning disable 0436
[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
#pragma warning restore 0436
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string BaseVersion = "3.5";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string PublicKeyToken = "ba83ff368b7563c6";
}

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/AssemblyVersionInfoCommon.cs

@ -1,22 +0,0 @@
/*************************************************************************************
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
***********************************************************************************/
internal static class _XceedVersionInfoCommon
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Build = ".*";
}

11
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Brushes.xaml

@ -1,14 +1,15 @@
<!--***********************************************************************************
Extended WPF Toolkit
Toolkit for WPF
Copyright (C) 2007-2013 Xceed Software Inc.
Copyright (C) 2007-2020 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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

15
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Properties/AssemblyInfo.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -30,7 +31,7 @@ using System;
[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2017" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2020" )]
// Setting ComVisible to false makes the types in this assembly not visible

508
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml

@ -1,14 +1,15 @@
<!--***********************************************************************************
Extended WPF Toolkit
Toolkit for WPF
Copyright (C) 2007-2013 Xceed Software Inc.
Copyright (C) 2007-2020 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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -17,12 +18,12 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localThemes="clr-namespace:Xceed.Wpf.AvalonDock.Themes"
xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDock="clr-namespace:Xceed.Wpf.AvalonDock;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockLayout="clr-namespace:Xceed.Wpf.AvalonDock.Layout;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockControls="clr-namespace:Xceed.Wpf.AvalonDock.Controls;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockConverters="clr-namespace:Xceed.Wpf.AvalonDock.Converters;assembly=Xceed.Wpf.AvalonDock"
xmlns:avalonDockProperties="clr-namespace:Xceed.Wpf.AvalonDock.Properties;assembly=Xceed.Wpf.AvalonDock">
xmlns:shell="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDock="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockLayout="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockControls="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockConverters="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:avalonDockProperties="http://schemas.xceed.com/wpf/xaml/avalondock">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Brushes.xaml" />
@ -37,6 +38,14 @@
<avalonDockConverters:ActivateCommandLayoutItemFromLayoutModelConverter x:Key="ActivateCommandLayoutItemFromLayoutModelConverter" />
<avalonDockConverters:AnchorableContextMenuHideVisibilityConverter x:Key="AnchorableContextMenuHideVisibilityConverter" />
<DataTemplate x:Key="DocumentPaneControlContentTemplate">
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
</DataTemplate>
<DataTemplate x:Key="AnchorablePaneControlContentTemplate">
<avalonDockControls:LayoutAnchorableControl Model="{Binding}" />
</DataTemplate>
<Style x:Key="AvalonDock_ThemeVS2010_ToolButtonStyle"
TargetType="ToggleButton">
@ -142,7 +151,8 @@
IsItemsHost="true"
Margin="2,0,2,0"
Grid.Row="0"
KeyboardNavigation.TabIndex="1" />
KeyboardNavigation.TabIndex="1"
KeyboardNavigation.DirectionalNavigation="Cycle" />
<avalonDockControls:DropDownButton x:Name="MenuDropDownButton"
Style="{StaticResource AvalonDock_ThemeVS2010_ToolButtonStyle}"
Focusable="False"
@ -271,8 +281,7 @@
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1,1,1,0"
CornerRadius="2,2,0,0"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}">
Background="{TemplateBinding Background}">
<ContentPresenter x:Name="Content"
ContentSource="Header"
HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
@ -365,13 +374,9 @@
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate"
Value="{StaticResource DocumentPaneControlContentTemplate}" />
</Style>
<!--AnchorablePaneControlStyle-->
@ -419,6 +424,7 @@
IsItemsHost="true"
Grid.Row="1"
KeyboardNavigation.TabIndex="1"
KeyboardNavigation.DirectionalNavigation="Cycle"
Panel.ZIndex="1" />
</Grid>
<ControlTemplate.Triggers>
@ -459,8 +465,7 @@
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1,0,1,1"
CornerRadius="0,0,2,2"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}">
Background="{TemplateBinding Background}">
<ContentPresenter x:Name="Content"
ContentSource="Header"
HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
@ -532,13 +537,9 @@
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<avalonDockControls:LayoutAnchorableControl Model="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate"
Value="{StaticResource AnchorablePaneControlContentTemplate}" />
</Style>
<Style TargetType="avalonDockControls:AnchorablePaneTitle">
@ -602,7 +603,7 @@
HorizontalAlignment="Center"
Command="{Binding Path=LayoutItem.HideCommand, RelativeSource={RelativeSource TemplatedParent}}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}">
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_Hide}">
<Image x:Name="PART_ImgHidePin"
Source="Images/PinClose.png" >
</Image>
@ -722,8 +723,8 @@
Padding="2">
<ContentPresenter TextElement.Foreground="{DynamicResource AvalonDock_ThemeVS2010_BaseColor2}"
Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
ContentTemplate="{Binding Model.Root.Manager.AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Side"
@ -1274,12 +1275,14 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutDocumentTabItem}">
<!--Use a transparent background to hit for contextMenu popup-->
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Root.Manager.DocumentContextMenu}"
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
Background="Transparent">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="0,2,0,1">
Margin="{Binding Padding, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@ -1289,8 +1292,8 @@
<Border Grid.ColumnSpan="3"
Background="Transparent" />
<ContentPresenter Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding DocumentHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding DocumentHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
ContentTemplate="{Binding Root.Manager.DocumentHeaderTemplate, Mode=OneWay}"
ContentTemplateSelector="{Binding Root.Manager.DocumentHeaderTemplateSelector, Mode=OneWay}" />
<!-- Close button should be moved out to the container style -->
<Button x:Name="DocumentCloseButton"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
@ -1371,19 +1374,18 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutAnchorableTabItem}">
<!--Use a transparent background to hit for contextMenu popup-->
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Root.Manager.AnchorableContextMenu}"
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
DropDownContextMenuDataContext="{Binding LayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
Background="Transparent">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
BorderThickness="{TemplateBinding BorderThickness}"
Margin="{Binding Padding, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}">
<Grid>
<ContentPresenter Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding AnchorableHeaderTemplate, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}"
ContentTemplateSelector="{Binding AnchorableHeaderTemplateSelector, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type avalonDock:DockingManager}, Mode=FindAncestor}}" />
<avalonDockControls:DropDownControlArea Grid.Column="0"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=Model, RelativeSource={RelativeSource TemplatedParent}}" >
</avalonDockControls:DropDownControlArea>
ContentTemplate="{Binding Root.Manager.AnchorableHeaderTemplate, Mode=OneWay}"
ContentTemplateSelector="{Binding Root.Manager.AnchorableHeaderTemplateSelector, Mode=OneWay}" />
</Grid>
</Border>
</avalonDockControls:DropDownControlArea>
@ -1412,7 +1414,9 @@
</Border>
<ContentPresenter Grid.Row="1"
FlowDirection="{TemplateBinding FlowDirection}"
Content="{Binding LayoutItem.View.Content, RelativeSource={RelativeSource TemplatedParent}}" />
Content="{Binding LayoutItem.View.Content, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding LayoutItem.View.ContentTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding LayoutItem.View.ContentTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<!--<ContentPresenter
Content="{Binding Model.Content, RelativeSource={RelativeSource TemplatedParent}}"
@ -1461,99 +1465,102 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutDocumentFloatingWindowControl}">
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid Margin="3">
<Grid.RowDefinitions>
<RowDefinition Height="18" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
Padding="2,0,2,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter Content="{Binding Model.RootDocument, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.DocumentTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.DocumentTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<avalonDockControls:DropDownButton x:Name="ContextMenuDropdownButton"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Style="{StaticResource AvalonDock_ThemeVS2010_ToolButtonStyle}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.DocumentContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=RootDocumentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu.png"
Width="13" >
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding Path=RootDocumentLayoutItem.CloseCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_Close}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose.png"
Width="13" >
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
<AdornerDecorator>
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid Margin="3">
<Grid.RowDefinitions>
<RowDefinition MinHeight="18"
Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
Padding="2,0,2,0">
<Grid UseLayoutRounding="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter Content="{Binding Model.RootDocument, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.DocumentTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.DocumentTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
<avalonDockControls:DropDownButton x:Name="ContextMenuDropdownButton"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Style="{StaticResource AvalonDock_ThemeVS2010_ToolButtonStyle}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.DocumentContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=RootDocumentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu.png"
Width="13">
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding Path=RootDocumentLayoutItem.CloseCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Document_Close}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose.png"
Width="13">
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
</AdornerDecorator>
<ControlTemplate.Triggers>
<Trigger Property="WindowState"
Value="Maximized">
@ -1684,116 +1691,119 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutAnchorableFloatingWindowControl}">
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="18" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
CornerRadius="1,1,0,0"
Padding="2,0,2,0"
TextElement.Foreground="{DynamicResource AvalonDock_ThemeVS2010_BaseColor2}"
Background="{DynamicResource AvalonDock_ThemeVS2010_BaseColor16}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}">
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter Content="{Binding Model.SinglePane.SelectedContent, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.AnchorableTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
</avalonDockControls:DropDownControlArea>
</Border>
<avalonDockControls:DropDownButton x:Name="SinglePaneContextMenu"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ToolButtonStyle}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu.png"
Width="13" >
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore.png"
Width="13" >
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding HideWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose.png"
Width="13" >
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
<AdornerDecorator>
<Grid>
<Border x:Name="WindowBorder"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition MinHeight="18"
Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Header"
CornerRadius="1,1,0,0"
Padding="2,0,2,0"
TextElement.Foreground="{DynamicResource AvalonDock_ThemeVS2010_BaseColor2}"
Background="{DynamicResource AvalonDock_ThemeVS2010_BaseColor16}">
<Grid UseLayoutRounding="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}">
<avalonDockControls:DropDownControlArea DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter Content="{Binding Model.SinglePane.SelectedContent, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.AnchorableTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" />
</avalonDockControls:DropDownControlArea>
</Border>
<avalonDockControls:DropDownButton x:Name="SinglePaneContextMenu"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ToolButtonStyle}"
Focusable="False"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_CxMenu_Hint}">
<Image x:Name="PART_ImgPinMenu"
Stretch="None"
Source="Images/PinMenu.png"
Width="13">
</Image>
</avalonDockControls:DropDownButton>
<Button x:Name="PART_PinMaximize"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Command="{x:Static shell:SystemCommands.MaximizeWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Maximize}"
Grid.Column="2">
<Image x:Name="PART_ImgPinMaximize"
Source="Images/PinMaximize.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinRestore"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Visibility="{Binding IsMaximized, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Command="{x:Static shell:SystemCommands.RestoreWindowCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Window_Restore}"
Grid.Column="2">
<Image x:Name="PART_ImgPinRestore"
Source="Images/PinRestore.png"
Width="13">
</Image>
</Button>
<Button x:Name="PART_PinClose"
shell:WindowChrome.IsHitTestVisibleInChrome="True"
Focusable="False"
Style="{StaticResource AvalonDock_ThemeVS2010_ButtonStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
Command="{Binding HideWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"
Grid.Column="3">
<Image x:Name="PART_ImgPinClose"
Source="Images/PinClose.png"
Width="13">
</Image>
</Button>
</Grid>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"
Grid.Row="1" />
</Grid>
</Border>
</Grid>
</AdornerDecorator>
<ControlTemplate.Triggers>
<Trigger Property="WindowState"
Value="Maximized">

30
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/VS2010Theme.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -21,13 +22,16 @@ using System.Text;
namespace Xceed.Wpf.AvalonDock.Themes
{
public class VS2010Theme : Theme
public class VS2010Theme : Theme
{
public override Uri GetResourceUri()
{
public override Uri GetResourceUri()
{
return new Uri(
"/Xceed.Wpf.AvalonDock.Themes.VS2010;component/Theme.xaml",
UriKind.Relative);
}
string assemblyName = "Xceed.Wpf.AvalonDock.Themes.VS2010";
return new Uri(
"/" + assemblyName + ";component/Theme.xaml",
UriKind.Relative );
}
}
}

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Xceed.Wpf.AvalonDock.Themes.VS2010.csproj

@ -61,8 +61,12 @@
</Page>
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyVersionInfo.cs" />
<Compile Include="AssemblyVersionInfoCommon.cs" />
<Compile Include="..\Xceed.Wpf.Toolkit\AssemblyVersionInfo.cs">
<Link>AssemblyVersionInfo.cs</Link>
</Compile>
<Compile Include="..\Xceed.Wpf.Toolkit\AssemblyVersionInfoCommon.cs">
<Link>AssemblyVersionInfoCommon.cs</Link>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
@ -131,11 +135,11 @@
<Resource Include="Images\PinRestore_Black.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>

32
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/AssemblyVersionInfo.cs

@ -1,32 +0,0 @@
/*************************************************************************************
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
***********************************************************************************/
#pragma warning disable 0436
[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
#pragma warning restore 0436
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string BaseVersion = "3.5";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string PublicKeyToken = "ba83ff368b7563c6";
}

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/AssemblyVersionInfoCommon.cs

@ -1,22 +0,0 @@
/*************************************************************************************
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
***********************************************************************************/
internal static class _XceedVersionInfoCommon
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Build = ".*";
}

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Commands/RelayCommand.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneControlOverlayArea.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneDropTarget.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTabPanel.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTitle.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AutoHideWindowManager.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/BindingHelper.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/ContextMenuEx.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

66
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DockingManagerDropTarget.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -73,7 +74,18 @@ namespace Xceed.Wpf.AvalonDock.Controls
Orientation = System.Windows.Controls.Orientation.Horizontal
};
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < childrenToTransfer.Length; i++ )
newOrientedPanel.Children.Insert( i, childrenToTransfer[ i ] );
}
else
{
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
}
newOrientedPanel.Children.Add( _manager.Layout.RootPanel );
_manager.Layout.RootPanel = newOrientedPanel;
@ -108,7 +120,19 @@ namespace Xceed.Wpf.AvalonDock.Controls
Orientation = System.Windows.Controls.Orientation.Horizontal
};
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < childrenToTransfer.Length; i++ )
newOrientedPanel.Children.Add( childrenToTransfer[ i ] );
}
else
{
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
}
newOrientedPanel.Children.Insert( 0, _manager.Layout.RootPanel );
@ -144,7 +168,18 @@ namespace Xceed.Wpf.AvalonDock.Controls
Orientation = System.Windows.Controls.Orientation.Vertical
};
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical )
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < childrenToTransfer.Length; i++ )
newOrientedPanel.Children.Insert( i, childrenToTransfer[ i ] );
}
else
{
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
}
newOrientedPanel.Children.Add( _manager.Layout.RootPanel );
_manager.Layout.RootPanel = newOrientedPanel;
@ -180,7 +215,18 @@ namespace Xceed.Wpf.AvalonDock.Controls
Orientation = System.Windows.Controls.Orientation.Vertical
};
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical )
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < childrenToTransfer.Length; i++ )
newOrientedPanel.Children.Add( childrenToTransfer[ i ] );
}
else
{
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
}
newOrientedPanel.Children.Insert( 0, _manager.Layout.RootPanel );
_manager.Layout.RootPanel = newOrientedPanel;

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DockingManagerOverlayArea.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneControlOverlayArea.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropAsAnchorableTarget.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

103
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs

@ -1,19 +1,21 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
***********************************************************************************/
using System;
using System.Linq;
using System.Windows;
using System.Windows.Media;
@ -59,6 +61,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
#region DropTargetType.DocumentPaneDockBottom
{
var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument );
var targetPane = targetModel as ILayoutPositionableElement;
if( targetPane != null )
{
// Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size.
if( targetPane.DockHeight.IsStar )
{
targetPane.DockHeight = new GridLength( targetPane.DockHeight.Value / 2d, GridUnitType.Star );
newLayoutDocumentPane.DockHeight = targetPane.DockHeight;
}
}
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if( parentModel == null )
@ -95,6 +107,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
#region DropTargetType.DocumentPaneDockTop
{
var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument );
var targetPane = targetModel as ILayoutPositionableElement;
if( targetPane != null )
{
// Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size.
if( targetPane.DockHeight.IsStar )
{
targetPane.DockHeight = new GridLength( targetPane.DockHeight.Value / 2d, GridUnitType.Star );
newLayoutDocumentPane.DockHeight = targetPane.DockHeight;
}
}
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if( parentModel == null )
@ -131,6 +153,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
#region DropTargetType.DocumentPaneDockLeft
{
var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument );
var targetPane = targetModel as ILayoutPositionableElement;
if( targetPane != null )
{
// Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size.
if( targetPane.DockWidth.IsStar )
{
targetPane.DockWidth = new GridLength( targetPane.DockWidth.Value / 2d, GridUnitType.Star );
newLayoutDocumentPane.DockWidth = targetPane.DockWidth;
}
}
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if( parentModel == null )
@ -166,6 +198,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
#region DropTargetType.DocumentPaneDockRight
{
var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument );
var targetPane = targetModel as ILayoutPositionableElement;
if( targetPane != null )
{
// Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size.
if( targetPane.DockWidth.IsStar )
{
targetPane.DockWidth = new GridLength( targetPane.DockWidth.Value / 2d, GridUnitType.Star );
newLayoutDocumentPane.DockWidth = targetPane.DockWidth;
}
}
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if( parentModel == null )
@ -222,7 +264,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
i = previousIndex;
}
sourceModel.IsActive = false;
paneModel.Children.Insert( i, sourceModel );
paneModel.Children.Insert( Math.Min( i, paneModel.Children.Count ), sourceModel );
sourceModel.IsActive = true;
}
break;
@ -245,6 +287,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
var targetPane = targetModel as ILayoutPositionableElement;
if( targetPane != null )
{
// Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size.
if( targetPane.DockHeight.IsStar )
{
targetPane.DockHeight = new GridLength( targetPane.DockHeight.Value / 2d, GridUnitType.Star );
newLayoutDocumentPane.DockHeight = targetPane.DockHeight;
}
}
if( parentModel == null )
{
@ -284,6 +336,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
var targetPane = targetModel as ILayoutPositionableElement;
if( targetPane != null )
{
// Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size.
if( targetPane.DockHeight.IsStar )
{
targetPane.DockHeight = new GridLength( targetPane.DockHeight.Value / 2d, GridUnitType.Star );
newLayoutDocumentPane.DockHeight = targetPane.DockHeight;
}
}
if( parentModel == null )
{
@ -323,6 +385,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
var targetPane = targetModel as ILayoutPositionableElement;
if( targetPane != null )
{
// Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size.
if( targetPane.DockWidth.IsStar )
{
targetPane.DockWidth = new GridLength( targetPane.DockWidth.Value / 2d, GridUnitType.Star );
newLayoutDocumentPane.DockWidth = targetPane.DockWidth;
}
}
if( parentModel == null )
{
@ -363,6 +435,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
var targetPane = targetModel as ILayoutPositionableElement;
if( targetPane != null )
{
// Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size.
if( targetPane.DockWidth.IsStar )
{
targetPane.DockWidth = new GridLength( targetPane.DockWidth.Value / 2d, GridUnitType.Star );
newLayoutDocumentPane.DockWidth = targetPane.DockWidth;
}
}
if( parentModel == null )
{
@ -424,9 +506,12 @@ namespace Xceed.Wpf.AvalonDock.Controls
checkPreviousContainer = false;
}
anchorableToImport.SetCanCloseInternal( true );
if( anchorableToImport.CanClose )
{
anchorableToImport.SetCanCloseInternal( true );
}
paneModel.Children.Insert( i, anchorableToImport );
paneModel.Children.Insert( Math.Min( i, paneModel.Children.Count ), anchorableToImport );
i++;
anchorableToActivate = anchorableToImport;
}

18
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneGroupDropTarget.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -78,7 +79,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
int i = 0;
foreach( var anchorableToImport in layoutAnchorablePaneGroup.Descendents().OfType<LayoutAnchorable>().ToArray() )
{
anchorableToImport.SetCanCloseInternal( true );
if( anchorableToImport.CanClose )
{
anchorableToImport.SetCanCloseInternal( true );
}
paneModel.Children.Insert( i, anchorableToImport );
i++;

19
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneTabPanel.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -37,8 +38,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override Size MeasureOverride( Size availableSize )
{
var visibleChildren = Children.Cast<UIElement>().Where( ch => ch.Visibility != System.Windows.Visibility.Collapsed );
Size desideredSize = new Size();
foreach( FrameworkElement child in Children )
{
@ -58,10 +57,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
var skipAllOthers = false;
foreach( TabItem doc in visibleChildren )
{
var layoutContent = doc.Content as LayoutContent;
if( skipAllOthers || offset + doc.DesiredSize.Width > finalSize.Width )
{
if( layoutContent.IsSelected && !doc.IsVisible )
var layoutContent = doc.Content as LayoutContent;
if( (layoutContent != null) && layoutContent.IsSelected && !doc.IsVisible )
{
var parentContainer = layoutContent.Parent as ILayoutContainer;
var parentSelector = layoutContent.Parent as ILayoutContentSelector;

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DragService.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropArea.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownButton.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

15
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownControlArea.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -108,6 +109,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
DropDownContextMenu.PlacementTarget = null;
DropDownContextMenu.Placement = PlacementMode.MousePoint;
DropDownContextMenu.HorizontalOffset = 0d;
DropDownContextMenu.VerticalOffset = 0d;
DropDownContextMenu.DataContext = DropDownContextMenuDataContext;
DropDownContextMenu.IsOpen = true;
// e.Handled = true;

23
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTarget.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -21,6 +22,7 @@ using System.Windows;
using System.Windows.Media;
using Xceed.Wpf.AvalonDock.Layout;
using System.Windows.Threading;
using System.Windows.Input;
namespace Xceed.Wpf.AvalonDock.Controls
{
@ -110,12 +112,19 @@ namespace Xceed.Wpf.AvalonDock.Controls
this.Drop( fwAsDocument );
}
Dispatcher.BeginInvoke( new Action( () =>
if( currentActiveContent != null )
{
Dispatcher.BeginInvoke( new Action( () =>
{
if( ( currentActiveContent.Root != null ) && ( currentActiveContent.Root.Manager != null ) )
{
currentActiveContent.Root.Manager.MoveFocus( new TraversalRequest( FocusNavigationDirection.Next ) );
}
currentActiveContent.IsSelected = false;
currentActiveContent.IsActive = false;
currentActiveContent.IsActive = true;
} ), DispatcherPriority.Background );
}
}
public virtual bool HitTest( Point dragPoint )

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTargetBase.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTargetType.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Extentions.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/FocusElementManager.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/FullWeakDictionary.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IDropTarget.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IOverlayWindow.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IOverlayWindowArea.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IOverlayWindowDropTarget.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/IOverlayWindowHost.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorGroupControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -19,6 +20,7 @@ using System.Windows.Controls;
using System.Collections.ObjectModel;
using Xceed.Wpf.AvalonDock.Layout;
using System.Windows;
using System.Windows.Data;
namespace Xceed.Wpf.AvalonDock.Controls
{
@ -75,7 +77,9 @@ namespace Xceed.Wpf.AvalonDock.Controls
var manager = _model.Root.Manager;
foreach( var childModel in _model.Children )
{
_childViews.Add( new LayoutAnchorControl( childModel ) { Template = manager.AnchorTemplate } );
var lac = new LayoutAnchorControl( childModel );
lac.SetBinding( LayoutAnchorControl.TemplateProperty, new Binding( DockingManager.AnchorTemplateProperty.Name ) { Source = manager } );
_childViews.Add( lac );
}
}
@ -105,7 +109,9 @@ namespace Xceed.Wpf.AvalonDock.Controls
int insertIndex = e.NewStartingIndex;
foreach( LayoutAnchorable childModel in e.NewItems )
{
_childViews.Insert( insertIndex++, new LayoutAnchorControl( childModel ) { Template = manager.AnchorTemplate } );
var lac = new LayoutAnchorControl( childModel );
lac.SetBinding( LayoutAnchorControl.TemplateProperty, new Binding( DockingManager.AnchorTemplateProperty.Name ) { Source = manager } );
_childViews.Insert( insertIndex++, lac );
}
}
}

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorSideControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

35
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -78,16 +79,18 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( e.OldValue != null )
{
( ( LayoutContent )e.OldValue ).PropertyChanged -= Model_PropertyChanged;
( ( LayoutContent )e.OldValue ).PropertyChanged -= this.Model_PropertyChanged;
}
if( Model != null )
if( ( this.Model != null) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) )
{
Model.PropertyChanged += Model_PropertyChanged;
SetLayoutItem( Model.Root.Manager.GetLayoutItemFromModel( Model ) );
this.Model.PropertyChanged += this.Model_PropertyChanged;
this.SetLayoutItem( this.Model.Root.Manager.GetLayoutItemFromModel( this.Model ) );
}
else
SetLayoutItem( null );
{
this.SetLayoutItem( null );
}
}
private void Model_PropertyChanged( object sender, System.ComponentModel.PropertyChangedEventArgs e )
@ -139,7 +142,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
/// <param name="value">The new value for the property.</param>
protected void SetLayoutItem( LayoutItem value )
{
SetValue( LayoutItemPropertyKey, value );
this.SetValue( LayoutItemPropertyKey, value );
}
#endregion
@ -150,8 +153,12 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnGotKeyboardFocus( System.Windows.Input.KeyboardFocusChangedEventArgs e )
{
if( Model != null )
Model.IsActive = true;
var setIsActive = !( ( e.NewFocus != null ) && ( e.OldFocus != null ) && ( e.OldFocus is LayoutFloatingWindowControl ) );
if( setIsActive )
{
if( Model != null )
Model.IsActive = true;
}
base.OnGotKeyboardFocus( e );
}

221
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -54,8 +55,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
UpdateThemeResources();
}
internal LayoutAnchorableFloatingWindowControl( LayoutAnchorableFloatingWindow model)
: base( model, false )
internal LayoutAnchorableFloatingWindowControl( LayoutAnchorableFloatingWindow model )
: this( model, false )
{
}
@ -127,14 +128,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
//SetBinding(VisibilityProperty, new Binding("IsVisible") { Source = _model, Converter = new BoolToVisibilityConverter(), Mode = BindingMode.OneWay, ConverterParameter = Visibility.Hidden });
//Issue: http://avalondock.codeplex.com/workitem/15036
IsVisibleChanged += ( s, args ) =>
{
var visibilityBinding = GetBindingExpression( VisibilityProperty );
if( IsVisible && ( visibilityBinding == null ) )
{
SetBinding( VisibilityProperty, new Binding( "IsVisible" ) { Source = _model, Converter = new BoolToVisibilityConverter(), Mode = BindingMode.OneWay, ConverterParameter = Visibility.Hidden } );
}
};
IsVisibleChanged += this.LayoutAnchorableFloatingWindowControl_IsVisibleChanged;
SetBinding( SingleContentLayoutItemProperty, new Binding( "Model.SinglePane.SelectedContent" ) { Source = this, Converter = new LayoutItemFromLayoutModelConverter() } );
@ -143,37 +137,18 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnClosed( EventArgs e )
{
var root = Model.Root;
if( root != null )
{
root.Manager.RemoveFloatingWindow( this );
root.CollectGarbage();
}
if( _overlayWindow != null )
{
_overlayWindow.Close();
_overlayWindow = null;
}
base.OnClosed( e );
if( !CloseInitiatedByUser && (root != null) )
{
root.FloatingWindows.Remove( _model );
}
base.OnClosed( e );
_model.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler( _model_PropertyChanged );
}
protected override void OnClosing( System.ComponentModel.CancelEventArgs e )
{
if( CloseInitiatedByUser && !KeepContentVisibleOnClose )
{
e.Cancel = true;
_model.Descendents().OfType<LayoutAnchorable>().ToArray().ForEach<LayoutAnchorable>( ( a ) => a.Hide() );
}
base.OnClosing( e );
_model.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler( _model_PropertyChanged );
IsVisibleChanged -= this.LayoutAnchorableFloatingWindowControl_IsVisibleChanged;
BindingOperations.ClearBinding( this, VisibilityProperty );
BindingOperations.ClearBinding( this, SingleContentLayoutItemProperty );
}
protected override IntPtr FilterMessage( IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled )
@ -215,6 +190,75 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
}
protected override bool CanClose( object parameter = null )
{
if( this.Model == null )
return false;
var root = this.Model.Root;
if( root == null )
return false;
var manager = root.Manager;
if( manager == null )
return false;
foreach( var anchorable in this.Model.Descendents().OfType<LayoutAnchorable>().ToArray() )
{
if( !anchorable.CanClose )
{
return false;
}
var anchorableLayoutItem = manager.GetLayoutItemFromModel( anchorable ) as LayoutAnchorableItem;
if( anchorableLayoutItem == null ||
anchorableLayoutItem.CloseCommand == null ||
!anchorableLayoutItem.CloseCommand.CanExecute( parameter ) )
{
return false;
}
}
return true;
}
protected override bool CanHide( object parameter = null )
{
if( this.Model == null )
return false;
var root = this.Model.Root;
if( root == null )
return false;
var manager = root.Manager;
if( manager == null )
return false;
foreach( var anchorable in this.Model.Descendents().OfType<LayoutAnchorable>().ToArray() )
{
if( !anchorable.CanHide )
{
return false;
}
var anchorableLayoutItem = manager.GetLayoutItemFromModel( anchorable ) as LayoutAnchorableItem;
if( anchorableLayoutItem == null ||
anchorableLayoutItem.HideCommand == null ||
!anchorableLayoutItem.HideCommand.CanExecute( parameter ) )
{
return false;
}
}
return true;
}
protected override void DoHide()
{
this.OnExecuteHideWindowCommand( null );
}
#endregion
#region Private Methods
@ -267,6 +311,19 @@ namespace Xceed.Wpf.AvalonDock.Controls
#endregion
#region Event Handlers
private void LayoutAnchorableFloatingWindowControl_IsVisibleChanged( object sender, DependencyPropertyChangedEventArgs e )
{
var visibilityBinding = GetBindingExpression( VisibilityProperty );
if( IsVisible && ( visibilityBinding == null ) )
{
SetBinding( VisibilityProperty, new Binding( "IsVisible" ) { Source = _model, Converter = new BoolToVisibilityConverter(), Mode = BindingMode.OneWay, ConverterParameter = Visibility.Hidden } );
}
}
#endregion
#region Commands
#region HideWindowCommand
@ -279,39 +336,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
private bool CanExecuteHideWindowCommand( object parameter )
{
if( Model == null )
return false;
var root = Model.Root;
if( root == null )
return false;
var manager = root.Manager;
if( manager == null )
return false;
bool canExecute = false;
foreach( var anchorable in this.Model.Descendents().OfType<LayoutAnchorable>().ToArray() )
{
if( !anchorable.CanHide )
{
canExecute = false;
break;
}
var anchorableLayoutItem = manager.GetLayoutItemFromModel( anchorable ) as LayoutAnchorableItem;
if( anchorableLayoutItem == null ||
anchorableLayoutItem.HideCommand == null ||
!anchorableLayoutItem.HideCommand.CanExecute( parameter ) )
{
canExecute = false;
break;
}
canExecute = true;
}
return canExecute;
return this.CanHide( parameter );
}
private void OnExecuteHideWindowCommand( object parameter )
@ -322,6 +347,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
var anchorableLayoutItem = manager.GetLayoutItemFromModel( anchorable ) as LayoutAnchorableItem;
anchorableLayoutItem.HideCommand.Execute( parameter );
}
this.BringFocusOnDockingManager();
}
#endregion
@ -334,39 +361,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
private bool CanExecuteCloseWindowCommand( object parameter )
{
if( Model == null )
return false;
var root = Model.Root;
if( root == null )
return false;
var manager = root.Manager;
if( manager == null )
return false;
bool canExecute = false;
foreach( var anchorable in this.Model.Descendents().OfType<LayoutAnchorable>().ToArray() )
{
if( !anchorable.CanClose )
{
canExecute = false;
break;
}
var anchorableLayoutItem = manager.GetLayoutItemFromModel( anchorable ) as LayoutAnchorableItem;
if( anchorableLayoutItem == null ||
anchorableLayoutItem.CloseCommand == null ||
!anchorableLayoutItem.CloseCommand.CanExecute( parameter ) )
{
canExecute = false;
break;
}
canExecute = true;
}
return canExecute;
return this.CanClose( parameter );
}
private void OnExecuteCloseWindowCommand( object parameter )
@ -421,24 +416,32 @@ namespace Xceed.Wpf.AvalonDock.Controls
if( _dropAreas != null )
return _dropAreas;
var draggingWindowManager = draggingWindow.Model.Root.Manager;
_dropAreas = new List<IDropArea>();
if( draggingWindow.Model is LayoutDocumentFloatingWindow )
return _dropAreas;
var rootVisual = ( Content as FloatingWindowContentHost ).RootVisual;
var rootVisual = this.Content as System.Windows.Media.Visual;
foreach( var areaHost in rootVisual.FindVisualChildren<LayoutAnchorablePaneControl>() )
{
_dropAreas.Add( new DropArea<LayoutAnchorablePaneControl>(
if( draggingWindowManager == areaHost.Model.Root.Manager )
{
_dropAreas.Add( new DropArea<LayoutAnchorablePaneControl>(
areaHost,
DropAreaType.AnchorablePane ) );
}
}
foreach( var areaHost in rootVisual.FindVisualChildren<LayoutDocumentPaneControl>() )
{
_dropAreas.Add( new DropArea<LayoutDocumentPaneControl>(
if( draggingWindowManager == areaHost.Model.Root.Manager )
{
_dropAreas.Add( new DropArea<LayoutDocumentPaneControl>(
areaHost,
DropAreaType.DocumentPane ) );
}
}
return _dropAreas;

24
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableItem.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -288,6 +289,11 @@ namespace Xceed.Wpf.AvalonDock.Controls
_anchorable = model as LayoutAnchorable;
_anchorable.IsVisibleChanged += new EventHandler( _anchorable_IsVisibleChanged );
if( _anchorable.CanClose )
{
_anchorable.SetCanCloseInternal( true );
}
base.Attach( model );
}
@ -340,11 +346,11 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void SetDefaultBindings()
{
if( HideCommand == null )
HideCommand = _defaultHideCommand;
this.SetCurrentValue( LayoutAnchorableItem.HideCommandProperty, _defaultHideCommand );
if( AutoHideCommand == null )
AutoHideCommand = _defaultAutoHideCommand;
this.SetCurrentValue( LayoutAnchorableItem.AutoHideCommandProperty, _defaultAutoHideCommand );
if( DockCommand == null )
DockCommand = _defaultDockCommand;
this.SetCurrentValue( LayoutAnchorableItem.DockCommandProperty, _defaultDockCommand );
Visibility = _anchorable.IsVisible ? Visibility.Visible : System.Windows.Visibility.Hidden;
base.SetDefaultBindings();

52
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -19,10 +20,11 @@ using System.Windows.Controls;
using System.Windows;
using System.Windows.Data;
using Xceed.Wpf.AvalonDock.Layout;
using System.Windows.Media;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class LayoutAnchorablePaneControl : TabControl, ILayoutControl//, ILogicalChildrenContainer
public class LayoutAnchorablePaneControl : LayoutCachePaneControl, ILayoutControl//, ILogicalChildrenContainer
{
#region Members
@ -68,7 +70,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnGotKeyboardFocus( System.Windows.Input.KeyboardFocusChangedEventArgs e )
{
_model.SelectedContent.IsActive = true;
if( ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
base.OnGotKeyboardFocus( e );
}
@ -77,17 +82,38 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
base.OnMouseLeftButtonDown( e );
if( !e.Handled && _model.SelectedContent != null )
_model.SelectedContent.IsActive = true;
if( e.OriginalSource is Visual )
{
var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor<DockingManager>();
if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null )
&& this.Model.Root.Manager.Equals( parentDockingManager ) )
{
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
}
}
}
protected override void OnMouseRightButtonDown( System.Windows.Input.MouseButtonEventArgs e )
{
base.OnMouseRightButtonDown( e );
if( !e.Handled && _model.SelectedContent != null )
_model.SelectedContent.IsActive = true;
if( e.OriginalSource is Visual )
{
var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor<DockingManager>();
if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null )
&& this.Model.Root.Manager.Equals( parentDockingManager ) )
{
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
}
}
}

15
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneGroupControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -42,7 +43,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnFixChildrenDockLengths()
{
#region Setup DockWidth/Height for children
if( _model.Orientation == Orientation.Horizontal )
{
for( int i = 0; i < _model.Children.Count; i++ )
@ -65,7 +65,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
}
}
#endregion
}
#endregion

31
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableTabItem.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -28,6 +29,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
private bool _isMouseDown = false;
private static LayoutAnchorableTabItem _draggingItem = null;
private static bool _cancelMouseLeave = false;
#endregion
@ -146,6 +148,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
_isMouseDown = false;
_draggingItem = null;
}
else
{
_cancelMouseLeave = false;
}
}
protected override void OnMouseLeftButtonUp( System.Windows.Input.MouseButtonEventArgs e )
@ -163,10 +169,13 @@ namespace Xceed.Wpf.AvalonDock.Controls
if( _isMouseDown && e.LeftButton == MouseButtonState.Pressed )
{
_draggingItem = this;
// drag the item if the mouse leave is not canceled.
// Mouse leave should be canceled when selecting a new tab to prevent automatic undock when Panel size is Auto.
_draggingItem = !_cancelMouseLeave ? this : null;
}
_isMouseDown = false;
_cancelMouseLeave = false;
}
protected override void OnMouseEnter( MouseEventArgs e )
@ -214,7 +223,11 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
_draggingItem = null;
}
internal static void CancelMouseLeave()
{
_cancelMouseLeave = true;
}
#endregion
}
#endregion
}
}

46
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAutoHideWindowControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -37,7 +38,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
private LayoutAnchorable _model;
private HwndSource _internalHwndSource = null;
private IntPtr parentWindowHandle;
private bool _internalHost_ContentRendered = false;
private ContentPresenter _internalHostPresenter = new ContentPresenter();
private Grid _internalGrid = null;
private AnchorSide _side;
@ -156,8 +156,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
Height = 0,
} );
_internalHost_ContentRendered = false;
_internalHwndSource.ContentRendered += _internalHwndSource_ContentRendered;
_internalHwndSource.RootVisual = _internalHostPresenter;
AddLogicalChild( _internalHostPresenter );
Win32Helper.BringWindowToTop( _internalHwndSource.Handle );
@ -168,7 +166,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( _internalHwndSource != null )
{
_internalHwndSource.ContentRendered -= _internalHwndSource_ContentRendered;
_internalHwndSource.Dispose();
_internalHwndSource = null;
}
@ -278,11 +275,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
#region Private Methods
private void _internalHwndSource_ContentRendered( object sender, EventArgs e )
{
_internalHost_ContentRendered = true;
}
private void _model_PropertyChanged( object sender, System.ComponentModel.PropertyChangedEventArgs e )
{
if( e.PropertyName == "IsAutoHidden" )
@ -313,10 +305,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
if( _side == AnchorSide.Right )
{
_internalGrid.ColumnDefinitions.Add( new ColumnDefinition() { Width = new GridLength( _manager.GridSplitterWidth ) } );
_internalGrid.ColumnDefinitions.Add( new ColumnDefinition() { Width = new GridLength( double.IsNaN( _manager.GridSplitterWidth ) ? 6d : _manager.GridSplitterWidth ) } );
_internalGrid.ColumnDefinitions.Add( new ColumnDefinition()
{
Width = _model.AutoHideWidth == 0.0 ? new GridLength( _model.AutoHideMinWidth ) : new GridLength( _model.AutoHideWidth, GridUnitType.Pixel )
Width = _model.AutoHideWidth == 0.0 ? new GridLength( double.IsNaN( _model.AutoHideMinWidth ) ? 100d : _model.AutoHideMinWidth ) : new GridLength( double.IsNaN( _model.AutoHideWidth ) ? 0d : _model.AutoHideWidth, GridUnitType.Pixel )
} );
Grid.SetColumn( _resizer, 0 );
@ -331,9 +323,9 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
_internalGrid.ColumnDefinitions.Add( new ColumnDefinition()
{
Width = _model.AutoHideWidth == 0.0 ? new GridLength( _model.AutoHideMinWidth ) : new GridLength( _model.AutoHideWidth, GridUnitType.Pixel ),
Width = _model.AutoHideWidth == 0.0 ? new GridLength( double.IsNaN( _model.AutoHideMinWidth ) ? 100d : _model.AutoHideMinWidth ) : new GridLength( double.IsNaN( _model.AutoHideWidth ) ? 0d : _model.AutoHideWidth, GridUnitType.Pixel ),
} );
_internalGrid.ColumnDefinitions.Add( new ColumnDefinition() { Width = new GridLength( _manager.GridSplitterWidth ) } );
_internalGrid.ColumnDefinitions.Add( new ColumnDefinition() { Width = new GridLength( double.IsNaN( _manager.GridSplitterWidth ) ? 6d : _manager.GridSplitterWidth ) } );
Grid.SetColumn( _internalHost, 0 );
Grid.SetColumn( _resizer, 1 );
@ -347,9 +339,9 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
_internalGrid.RowDefinitions.Add( new RowDefinition()
{
Height = _model.AutoHideHeight == 0.0 ? new GridLength( _model.AutoHideMinHeight ) : new GridLength( _model.AutoHideHeight, GridUnitType.Pixel ),
Height = _model.AutoHideHeight == 0.0 ? new GridLength( double.IsNaN( _model.AutoHideMinHeight ) ? 100d : _model.AutoHideMinHeight ) : new GridLength( double.IsNaN( _model.AutoHideHeight ) ? 0d : _model.AutoHideHeight, GridUnitType.Pixel ),
} );
_internalGrid.RowDefinitions.Add( new RowDefinition() { Height = new GridLength( _manager.GridSplitterHeight ) } );
_internalGrid.RowDefinitions.Add( new RowDefinition() { Height = new GridLength( double.IsNaN( _manager.GridSplitterHeight ) ? 6d : _manager.GridSplitterHeight ) } );
Grid.SetRow( _internalHost, 0 );
Grid.SetRow( _resizer, 1 );
@ -362,10 +354,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
else if( _side == AnchorSide.Bottom )
{
_internalGrid.RowDefinitions.Add( new RowDefinition() { Height = new GridLength( _manager.GridSplitterHeight ) } );
_internalGrid.RowDefinitions.Add( new RowDefinition() { Height = new GridLength( double.IsNaN( _manager.GridSplitterHeight ) ? 6d : _manager.GridSplitterHeight ) } );
_internalGrid.RowDefinitions.Add( new RowDefinition()
{
Height = _model.AutoHideHeight == 0.0 ? new GridLength( _model.AutoHideMinHeight ) : new GridLength( _model.AutoHideHeight, GridUnitType.Pixel ),
Height = _model.AutoHideHeight == 0.0 ? new GridLength( double.IsNaN( _model.AutoHideMinHeight ) ? 100d : _model.AutoHideMinHeight ) : new GridLength( double.IsNaN( _model.AutoHideHeight ) ? 0d : _model.AutoHideHeight, GridUnitType.Pixel ),
} );
Grid.SetRow( _resizer, 0 );
@ -500,7 +492,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
else
_model.AutoHideWidth -= delta;
_internalGrid.ColumnDefinitions[ 1 ].Width = new GridLength( _model.AutoHideWidth, GridUnitType.Pixel );
_internalGrid.ColumnDefinitions[ 1 ].Width = new GridLength( double.IsNaN( _model.AutoHideWidth ) ? 0d : _model.AutoHideWidth, GridUnitType.Pixel );
}
else if( _side == AnchorSide.Left )
{
@ -509,7 +501,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
else
_model.AutoHideWidth += delta;
_internalGrid.ColumnDefinitions[ 0 ].Width = new GridLength( _model.AutoHideWidth, GridUnitType.Pixel );
_internalGrid.ColumnDefinitions[ 0 ].Width = new GridLength( double.IsNaN( _model.AutoHideWidth ) ? 0d : _model.AutoHideWidth, GridUnitType.Pixel );
}
else if( _side == AnchorSide.Top )
{
@ -518,7 +510,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
else
_model.AutoHideHeight += delta;
_internalGrid.RowDefinitions[ 0 ].Height = new GridLength( _model.AutoHideHeight, GridUnitType.Pixel );
_internalGrid.RowDefinitions[ 0 ].Height = new GridLength( double.IsNaN( _model.AutoHideHeight ) ? 0d : _model.AutoHideHeight, GridUnitType.Pixel );
}
else if( _side == AnchorSide.Bottom )
{
@ -527,7 +519,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
else
_model.AutoHideHeight -= delta;
_internalGrid.RowDefinitions[ 1 ].Height = new GridLength( _model.AutoHideHeight, GridUnitType.Pixel );
_internalGrid.RowDefinitions[ 1 ].Height = new GridLength( double.IsNaN( _model.AutoHideHeight ) ? 0d : _model.AutoHideHeight, GridUnitType.Pixel );
}
HideResizerOverlayWindow();

104
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutCachePaneControl.cs

@ -0,0 +1,104 @@
/*************************************************************************************
Toolkit for WPF
Copyright (C) 2007-2020 Xceed Software Inc.
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
***********************************************************************************/
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Linq;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class LayoutCachePaneControl : TabControl
{
#region Constructors
static LayoutCachePaneControl()
{
}
#endregion
#region Properties
#endregion
#region Overrides
protected override void OnSelectionChanged( SelectionChangedEventArgs e )
{
if( this.SelectedIndex < 0 )
e.Handled = true;
base.OnSelectionChanged( e );
}
#endregion
}
}

82
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -19,6 +20,9 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using Xceed.Wpf.AvalonDock.Layout;
using System.Collections;
using System;
using System.Windows.Media;
namespace Xceed.Wpf.AvalonDock.Controls
{
@ -149,23 +153,75 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnPreviewGotKeyboardFocus( KeyboardFocusChangedEventArgs e )
{
this.SetIsActive();
var setIsActive = !( (e.NewFocus != null) && (e.OldFocus != null) && (e.OldFocus is LayoutFloatingWindowControl) );
if( setIsActive )
{
this.SetIsActive();
}
base.OnPreviewGotKeyboardFocus( e );
}
protected override void OnMouseLeftButtonDown( MouseButtonEventArgs e )
protected override void OnPreviewMouseLeftButtonDown( MouseButtonEventArgs e )
{
this.SetIsActive();
base.OnMouseLeftButtonDown( e );
if( e.OriginalSource is Visual )
{
var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor<DockingManager>();
if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null )
&& this.Model.Root.Manager.Equals( parentDockingManager ) )
{
this.SetIsActive();
}
}
base.OnPreviewMouseLeftButtonDown( e );
}
protected override void OnMouseRightButtonDown( MouseButtonEventArgs e )
protected override void OnPreviewMouseRightButtonDown( MouseButtonEventArgs e )
{
this.SetIsActive();
base.OnMouseLeftButtonDown( e );
if( e.OriginalSource is Visual )
{
var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor<DockingManager>();
if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null )
&& this.Model.Root.Manager.Equals( parentDockingManager ) )
{
this.SetIsActive();
}
}
base.OnPreviewMouseRightButtonDown( e );
}
#endregion
#region Internal Methods
internal void SetResourcesFromObject( FrameworkElement current )
{
while( current != null )
{
if( current.Resources.Count > 0 )
{
var entries = new DictionaryEntry[ current.Resources.Count ];
current.Resources.CopyTo( entries, 0 );
entries.ForEach( x =>
{
try
{
if( this.Resources[ x.Key ] == null )
{
this.Resources.Add( x.Key, x.Value );
}
}
catch( Exception ) { }
} );
}
current = current.Parent as FrameworkElement;
}
}
#endregion
#region Private Methods

56
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -19,6 +20,7 @@ using Xceed.Wpf.AvalonDock.Layout;
using System.Windows;
using System.Windows.Controls.Primitives;
using Microsoft.Windows.Shell;
using System.Linq;
namespace Xceed.Wpf.AvalonDock.Controls
{
@ -45,7 +47,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
internal LayoutDocumentFloatingWindowControl( LayoutDocumentFloatingWindow model )
: base( model, false )
: this( model, false )
{
}
@ -57,6 +59,9 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
get
{
if( ( _model == null ) || ( _model.Root == null ) || ( _model.Root.Manager == null ) )
return null;
return _model.Root.Manager.GetLayoutItemFromModel( _model.RootDocument );
}
}
@ -121,18 +126,41 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnClosed( EventArgs e )
{
var root = Model.Root;
root.Manager.RemoveFloatingWindow( this );
root.CollectGarbage();
base.OnClosed( e );
if( !CloseInitiatedByUser )
_model.RootDocumentChanged -= new EventHandler( _model_RootDocumentChanged );
}
protected override bool CanClose( object parameter = null )
{
if( this.Model == null )
return false;
var root = this.Model.Root;
if( root == null )
return false;
var manager = root.Manager;
if( manager == null )
return false;
foreach( var document in this.Model.Descendents().OfType<LayoutDocument>().ToArray() )
{
root.FloatingWindows.Remove( _model );
if( !document.CanClose )
{
return false;
}
var documentLayoutItem = manager.GetLayoutItemFromModel( document ) as LayoutDocumentItem;
if( documentLayoutItem == null ||
documentLayoutItem.CloseCommand == null ||
!documentLayoutItem.CloseCommand.CanExecute( parameter ) )
{
return false;
}
}
_model.RootDocumentChanged -= new EventHandler( _model_RootDocumentChanged );
return true;
}
#endregion

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentItem.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

60
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -20,10 +21,11 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using Xceed.Wpf.AvalonDock.Layout;
using System.Windows.Media;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class LayoutDocumentPaneControl : TabControl, ILayoutControl//, ILogicalChildrenContainer
public class LayoutDocumentPaneControl : LayoutCachePaneControl, ILayoutControl//, ILogicalChildrenContainer
{
#region Members
@ -55,6 +57,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
#region Properties
#region Model
public ILayoutElement Model
{
get
@ -65,6 +69,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
#endregion
#endregion
#region Overrides
protected override System.Collections.IEnumerator LogicalChildren
@ -87,17 +93,38 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
base.OnMouseLeftButtonDown( e );
if( !e.Handled && _model.SelectedContent != null )
_model.SelectedContent.IsActive = true;
if( e.OriginalSource is Visual )
{
var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor<DockingManager>();
if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null )
&& this.Model.Root.Manager.Equals( parentDockingManager ) )
{
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
}
}
}
protected override void OnMouseRightButtonDown( System.Windows.Input.MouseButtonEventArgs e )
{
base.OnMouseRightButtonDown( e );
if( !e.Handled && _model.SelectedContent != null )
_model.SelectedContent.IsActive = true;
if( e.OriginalSource is Visual )
{
var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor<DockingManager>();
if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null )
&& this.Model.Root.Manager.Equals( parentDockingManager ) )
{
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
}
}
}
@ -107,9 +134,12 @@ namespace Xceed.Wpf.AvalonDock.Controls
private void OnLayoutUpdated( object sender, EventArgs e )
{
var modelWithAtcualSize = _model as ILayoutPositionableElementWithActualSize;
modelWithAtcualSize.ActualWidth = ActualWidth;
modelWithAtcualSize.ActualHeight = ActualHeight;
if( this.IsLoaded )
{
var modelWithAtcualSize = _model as ILayoutPositionableElementWithActualSize;
modelWithAtcualSize.ActualWidth = ActualWidth;
modelWithAtcualSize.ActualHeight = ActualHeight;
}
}
#endregion

16
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneGroupControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -42,7 +43,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnFixChildrenDockLengths()
{
#region Setup DockWidth/Height for children
if( _model.Orientation == Orientation.Horizontal )
{
for( int i = 0; i < _model.Children.Count; i++ )
@ -65,7 +65,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
}
}
#endregion
// #endregion
}
#endregion

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentTabItem.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

359
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -26,6 +27,7 @@ using System.Windows.Media;
using Xceed.Wpf.AvalonDock.Layout;
using System.Windows.Documents;
using Xceed.Wpf.AvalonDock.Themes;
using Standard;
namespace Xceed.Wpf.AvalonDock.Controls
{
@ -58,6 +60,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
this.Loaded += new RoutedEventHandler( OnLoaded );
this.Unloaded += new RoutedEventHandler( OnUnloaded );
this.IsVisibleChanged += this.LayoutFloatingWindowControl_IsVisibleChanged;
_model = model;
}
@ -86,7 +89,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
/// IsContentImmutable Dependency Property
/// </summary>
public static readonly DependencyProperty IsContentImmutableProperty = DependencyProperty.Register( "IsContentImmutable", typeof( bool ), typeof( LayoutFloatingWindowControl ),
new FrameworkPropertyMetadata( (bool)false ) );
new FrameworkPropertyMetadata( ( bool )false ) );
/// <summary>
/// Gets/sets the IsContentImmutable property. This dependency property
@ -96,7 +99,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
get
{
return (bool)GetValue( IsContentImmutableProperty );
return ( bool )GetValue( IsContentImmutableProperty );
}
private set
{
@ -220,13 +223,16 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( !_isInternalChange )
{
if( WindowState == WindowState.Maximized )
if( this.WindowState == WindowState.Maximized )
{
UpdateMaximizedState( true );
this.UpdateMaximizedState( true );
}
else
{
WindowState = IsMaximized ? WindowState.Maximized : WindowState.Normal;
if( this.IsMaximized )
{
this.WindowState = WindowState.Maximized;
}
}
}
@ -239,13 +245,37 @@ namespace Xceed.Wpf.AvalonDock.Controls
#region Overrides
protected override void OnClosing( System.ComponentModel.CancelEventArgs e )
{
if( this.CloseInitiatedByUser && !this.KeepContentVisibleOnClose )
{
// model.CanClose is false, can we hide ?
if( !this.CanClose() )
{
// Cancel the closing because we are hiding or nothing to do on (Alt + F4).
e.Cancel = true;
if( this.CanHide() )
{
// Just hiding.
this.DoHide();
}
}
}
base.OnClosing( e );
}
protected override void OnClosed( EventArgs e )
{
if( Content != null )
var root = this.Model.Root;
if( root != null )
{
var host = Content as FloatingWindowContentHost;
host.Dispose();
root.Manager.RemoveFloatingWindow( this );
root.CollectGarbage();
}
if( this.Content != null )
{
if( _hwndSrc != null )
{
_hwndSrc.RemoveHook( _hwndSrcHook );
@ -255,6 +285,13 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
base.OnClosed( e );
if( !this.CloseInitiatedByUser && ( root != null ) )
{
root.FloatingWindows.Remove( this.Model as LayoutFloatingWindow );
}
this.BringFocusOnDockingManager();
}
protected override void OnInitialized( EventArgs e )
@ -271,6 +308,30 @@ namespace Xceed.Wpf.AvalonDock.Controls
base.OnInitialized( e );
}
protected override void OnPreviewKeyDown( KeyEventArgs e )
{
if( Keyboard.IsKeyDown( Key.LeftCtrl ) || Keyboard.IsKeyDown( Key.RightCtrl ) )
{
if( e.IsDown && e.Key == Key.Tab )
{
if( ( this.Model != null ) && ( this.Model.Root != null ) )
{
var manager = this.Model.Root.Manager;
if( manager != null )
{
if( !manager.IsNavigatorWindowActive )
{
manager.ShowNavigatorWindow();
e.Handled = true;
}
}
}
}
}
base.OnPreviewKeyDown( e );
}
#endregion
@ -313,6 +374,20 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
}
protected virtual bool CanClose( object parameter = null )
{
return false;
}
protected virtual bool CanHide( object parameter = null )
{
return false;
}
protected virtual void DoHide()
{
}
internal void AttachDrag( bool onActivated = true )
{
if( onActivated )
@ -334,6 +409,34 @@ namespace Xceed.Wpf.AvalonDock.Controls
switch( msg )
{
case Win32Helper.NCCALCSIZE:
if( wParam != IntPtr.Zero )
{
handled = true;
var client = (RECT)Marshal.PtrToStructure( lParam, typeof( RECT ) );
client.Bottom -= 1;
Marshal.StructureToPtr( client, lParam, false );
}
break;
//case Win32Helper.WM_NCHITTEST:
// {
// handled = true;
// //var htLocation = DefWindowProc( hwnd, msg, wParam, lParam ).ToInt32();
// //switch( htLocation )
// //{
// // case (int)HitTestResult.HTBOTTOM:
// // case (int)HitTestResult.HTBOTTOMLEFT:
// // case (int)HitTestResult.HTBOTTOMRIGHT:
// // case (int)HitTestResult.HTLEFT:
// // case (int)HitTestResult.HTRIGHT:
// // case (int)HitTestResult.HTTOP:
// // case (int)HitTestResult.HTTOPLEFT:
// // case (int)HitTestResult.HTTOPRIGHT:
// // htLocation = (int)HitTestResult.HTBORDER;
// }
// break;
case Win32Helper.WM_ACTIVATE:
if( ( (int)wParam & 0xFFFF ) == Win32Helper.WA_INACTIVE )
{
@ -401,6 +504,26 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
}
internal void BringFocusOnDockingManager()
{
// Prevent focus lost on MainWindow when closing floatingWindows.
if( this.Owner != null )
{
this.Owner.Focus();
}
else
{
if( (this.Model != null) && ( this.Model.Root != null) && ( this.Model.Root.Manager != null ) )
{
var firstUIElement = this.Model.Root.Manager.FindVisualChildren<UIElement>().Where( control => control.Focusable ).FirstOrDefault();
if( firstUIElement != null )
{
firstUIElement.Focus();
}
}
}
}
#endregion
#region Private Methods
@ -412,11 +535,18 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( lfwc.IsLoaded && lfwc.IsContentImmutable )
return lfwc.Content;
return new FloatingWindowContentHost( sender as LayoutFloatingWindowControl ) { Content = content as UIElement };
return content;
}
return null;
}
private void LayoutFloatingWindowControl_IsVisibleChanged( object sender, DependencyPropertyChangedEventArgs e )
{
if( (bool)e.NewValue )
{
}
}
private void OnLoaded( object sender, RoutedEventArgs e )
{
this.Loaded -= new RoutedEventHandler( OnLoaded );
@ -454,7 +584,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
var clientArea = Win32Helper.GetClientRect( windowHandle );
var windowArea = Win32Helper.GetWindowRect( windowHandle );
Left = mousePosition.X - windowArea.Width / 2.0;
Left = mousePosition.X - ( windowArea.Width - clientArea.Width ) / 2.0;
Top = mousePosition.Y - ( windowArea.Height - clientArea.Height ) / 2.0;
_attachDrag = false;
@ -499,202 +629,5 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
#endregion
#region Internal Classes
protected internal class FloatingWindowContentHost : HwndHost
{
#region Members
private LayoutFloatingWindowControl _owner;
private HwndSource _wpfContentHost = null;
private Border _rootPresenter = null;
private DockingManager _manager = null;
#endregion
#region Constructors
public FloatingWindowContentHost( LayoutFloatingWindowControl owner )
{
_owner = owner;
var manager = _owner.Model.Root.Manager;
var binding = new Binding( "SizeToContent" ) { Source = _owner };
BindingOperations.SetBinding( this, FloatingWindowContentHost.SizeToContentProperty, binding );
}
#endregion
#region Properties
#region RootVisual
public Visual RootVisual
{
get
{
return _rootPresenter;
}
}
#endregion
#region Content
/// <summary>
/// Content Dependency Property
/// </summary>
public static readonly DependencyProperty ContentProperty = DependencyProperty.Register( "Content", typeof( UIElement ), typeof( FloatingWindowContentHost ),
new FrameworkPropertyMetadata( ( UIElement )null, new PropertyChangedCallback( OnContentChanged ) ) );
/// <summary>
/// Gets or sets the Content property. This dependency property
/// indicates ....
/// </summary>
public UIElement Content
{
get
{
return ( UIElement )GetValue( ContentProperty );
}
set
{
SetValue( ContentProperty, value );
}
}
/// <summary>
/// Handles changes to the Content property.
/// </summary>
private static void OnContentChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
( ( FloatingWindowContentHost )d ).OnContentChanged( (UIElement)e.OldValue, (UIElement)e.NewValue );
}
/// <summary>
/// Provides derived classes an opportunity to handle changes to the Content property.
/// </summary>
protected virtual void OnContentChanged( UIElement oldValue, UIElement newValue )
{
if( _rootPresenter != null )
_rootPresenter.Child = Content;
var oldContent = oldValue as FrameworkElement;
if( oldContent != null )
{
oldContent.SizeChanged -= this.Content_SizeChanged;
}
var newContent = newValue as FrameworkElement;
if( newContent != null )
{
newContent.SizeChanged += this.Content_SizeChanged;
}
}
#endregion
#region SizeToContent
/// <summary>
/// SizeToContent Dependency Property
/// </summary>
public static readonly DependencyProperty SizeToContentProperty = DependencyProperty.Register( "SizeToContent", typeof( SizeToContent ), typeof( FloatingWindowContentHost ),
new FrameworkPropertyMetadata( SizeToContent.Manual, new PropertyChangedCallback( OnSizeToContentChanged ) ) );
/// <summary>
/// Gets or sets the SizeToContent property.
/// </summary>
public SizeToContent SizeToContent
{
get
{
return (SizeToContent)GetValue( SizeToContentProperty );
}
set
{
SetValue( SizeToContentProperty, value );
}
}
/// <summary>
/// Handles changes to the SizeToContent property.
/// </summary>
private static void OnSizeToContentChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
( (FloatingWindowContentHost)d ).OnSizeToContentChanged( (SizeToContent)e.OldValue, (SizeToContent)e.NewValue );
}
/// <summary>
/// Provides derived classes an opportunity to handle changes to the SizeToContent property.
/// </summary>
protected virtual void OnSizeToContentChanged( SizeToContent oldValue, SizeToContent newValue )
{
if( _wpfContentHost != null )
{
_wpfContentHost.SizeToContent = newValue;
}
}
#endregion
#endregion
#region Overrides
protected override System.Runtime.InteropServices.HandleRef BuildWindowCore( System.Runtime.InteropServices.HandleRef hwndParent )
{
_wpfContentHost = new HwndSource( new HwndSourceParameters()
{
ParentWindow = hwndParent.Handle,
WindowStyle = Win32Helper.WS_CHILD | Win32Helper.WS_VISIBLE | Win32Helper.WS_CLIPSIBLINGS | Win32Helper.WS_CLIPCHILDREN,
Width = 1,
Height = 1
} );
_rootPresenter = new Border() { Child = new AdornerDecorator() { Child = Content }, Focusable = true };
_rootPresenter.SetBinding( Border.BackgroundProperty, new Binding( "Background" ) { Source = _owner } );
_wpfContentHost.RootVisual = _rootPresenter;
_manager = _owner.Model.Root.Manager;
_manager.InternalAddLogicalChild( _rootPresenter );
return new HandleRef( this, _wpfContentHost.Handle );
}
protected override void DestroyWindowCore( HandleRef hwnd )
{
_manager.InternalRemoveLogicalChild( _rootPresenter );
if( _wpfContentHost != null )
{
_wpfContentHost.Dispose();
_wpfContentHost = null;
}
}
protected override Size MeasureOverride( Size constraint )
{
if( Content == null )
return base.MeasureOverride( constraint );
Content.Measure( constraint );
return Content.DesiredSize;
}
#endregion
#region Event Handlers
private void Content_SizeChanged( object sender, SizeChangedEventArgs e )
{
this.InvalidateMeasure();
this.InvalidateArrange();
}
#endregion
}
#endregion
}
}

92
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -95,6 +96,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
_model.ChildrenTreeChanged += ( s, args ) =>
{
if( args.Change != ChildrenTreeChange.DirectChildrenChanged )
return;
if( _asyncRefreshCalled.HasValue &&
_asyncRefreshCalled.Value == args.Change )
return;
@ -271,7 +274,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
ColumnDefinitions.Add( new ColumnDefinition()
{
Width = childModel.IsVisible && nextChildModelVisibleExist ? new GridLength( manager.GridSplitterWidth ) : new GridLength( 0.0, GridUnitType.Pixel )
Width = childModel.IsVisible && nextChildModelVisibleExist ? new GridLength( double.IsNaN( manager.GridSplitterWidth ) ? 6d : manager.GridSplitterWidth ) : new GridLength( 0.0, GridUnitType.Pixel )
} );
Grid.SetColumn( InternalChildren[ iChild ], iColumn );
}
@ -313,7 +316,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
RowDefinitions.Add( new RowDefinition()
{
Height = childModel.IsVisible && nextChildModelVisibleExist ? new GridLength( manager.GridSplitterHeight ) : new GridLength( 0.0, GridUnitType.Pixel )
Height = childModel.IsVisible && nextChildModelVisibleExist ? new GridLength( double.IsNaN( manager.GridSplitterHeight ) ? 6d : manager.GridSplitterHeight ) : new GridLength( 0.0, GridUnitType.Pixel )
} );
//if (RowDefinitions.Last().Height.Value == 0.0)
// System.Diagnostics.Debugger.Break();
@ -391,7 +394,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
trToWnd.Transform( new Point() );
double delta;
if( Orientation == System.Windows.Controls.Orientation.Horizontal )
if( Orientation == Orientation.Horizontal )
delta = Canvas.GetLeft( _resizerGhost ) - _initialStartPoint.X;
else
delta = Canvas.GetTop( _resizerGhost ) - _initialStartPoint.Y;
@ -402,49 +405,70 @@ namespace Xceed.Wpf.AvalonDock.Controls
var nextChild = GetNextVisibleChild( indexOfResizer );
var prevChildActualSize = prevChild.TransformActualSizeToAncestor();
var nextChildActualSize = nextChild.TransformActualSizeToAncestor();
var nextChildActualSize = (nextChild != null) ? nextChild.TransformActualSizeToAncestor() : new Size();
var totalActualSize = new Size(prevChildActualSize.Width + nextChildActualSize.Width, prevChildActualSize.Height + nextChildActualSize.Height );
var prevChildModel = ( ILayoutPositionableElement )( prevChild as ILayoutControl ).Model;
var nextChildModel = ( ILayoutPositionableElement )( nextChild as ILayoutControl ).Model;
var nextChildModel = (nextChild != null) ? ( ILayoutPositionableElement )( nextChild as ILayoutControl ).Model : null;
var totalStarSize = new Size( prevChildModel.DockWidth.IsStar && nextChildModel.DockWidth.IsStar ? prevChildModel.DockWidth.Value + nextChildModel.DockWidth.Value : 1d,
prevChildModel.DockHeight.IsStar && nextChildModel.DockHeight.IsStar ? prevChildModel.DockHeight.Value + nextChildModel.DockHeight.Value : 1d );
if( Orientation == System.Windows.Controls.Orientation.Horizontal )
if( Orientation == Orientation.Horizontal )
{
if( prevChildModel.DockWidth.IsStar )
{
prevChildModel.DockWidth = new GridLength( prevChildModel.DockWidth.Value * ( prevChildActualSize.Width + delta ) / prevChildActualSize.Width, GridUnitType.Star );
prevChildModel.DockWidth = new GridLength( ((prevChildActualSize.Width + delta) / totalActualSize.Width) * totalStarSize.Width, GridUnitType.Star );
}
else
{
prevChildModel.DockWidth = new GridLength( prevChildModel.DockWidth.Value + delta, GridUnitType.Pixel );
var width = ( prevChildModel.DockWidth.IsAuto ) ? prevChildActualSize.Width : prevChildModel.DockWidth.Value;
width += delta;
var widthToSet = Math.Max( width, prevChildModel.DockMinWidth );
prevChildModel.DockWidth = new GridLength( widthToSet, GridUnitType.Pixel );
}
if( nextChildModel.DockWidth.IsStar )
if( nextChildModel != null )
{
nextChildModel.DockWidth = new GridLength( nextChildModel.DockWidth.Value * ( nextChildActualSize.Width - delta ) / nextChildActualSize.Width, GridUnitType.Star );
}
else
{
nextChildModel.DockWidth = new GridLength( nextChildModel.DockWidth.Value - delta, GridUnitType.Pixel );
if( nextChildModel.DockWidth.IsStar )
{
nextChildModel.DockWidth = new GridLength( ((nextChildActualSize.Width - delta) / totalActualSize.Width) * totalStarSize.Width, GridUnitType.Star );
}
else
{
var width = ( nextChildModel.DockWidth.IsAuto ) ? nextChildActualSize.Width : nextChildModel.DockWidth.Value;
width -= delta;
var widthToSet = Math.Max( width, nextChildModel.DockMinWidth );
nextChildModel.DockWidth = new GridLength( widthToSet, GridUnitType.Pixel );
}
}
}
else
{
if( prevChildModel.DockHeight.IsStar )
{
prevChildModel.DockHeight = new GridLength( prevChildModel.DockHeight.Value * ( prevChildActualSize.Height + delta ) / prevChildActualSize.Height, GridUnitType.Star );
prevChildModel.DockHeight = new GridLength( ((prevChildActualSize.Height + delta) / totalActualSize.Height) * totalStarSize.Height, GridUnitType.Star );
}
else
{
prevChildModel.DockHeight = new GridLength( prevChildModel.DockHeight.Value + delta, GridUnitType.Pixel );
var height = ( prevChildModel.DockHeight.IsAuto ) ? prevChildActualSize.Height : prevChildModel.DockHeight.Value;
height += delta;
var heightToSet = Math.Max( height, prevChildModel.DockMinHeight );
prevChildModel.DockHeight = new GridLength( heightToSet, GridUnitType.Pixel );
}
if( nextChildModel.DockHeight.IsStar )
{
nextChildModel.DockHeight = new GridLength( nextChildModel.DockHeight.Value * ( nextChildActualSize.Height - delta ) / nextChildActualSize.Height, GridUnitType.Star );
}
else
if( nextChildModel != null )
{
nextChildModel.DockHeight = new GridLength( nextChildModel.DockHeight.Value - delta, GridUnitType.Pixel );
if( nextChildModel.DockHeight.IsStar )
{
nextChildModel.DockHeight = new GridLength( ((nextChildActualSize.Height - delta) / totalActualSize.Height) * totalStarSize.Height, GridUnitType.Star );
}
else
{
var height = ( nextChildModel.DockHeight.IsAuto ) ? nextChildActualSize.Height : nextChildModel.DockHeight.Value;
height -= delta;
var heightToSet = Math.Max( height, nextChildModel.DockMinHeight );
nextChildModel.DockHeight = new GridLength( heightToSet, GridUnitType.Pixel );
}
}
}
@ -487,10 +511,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
var nextChild = GetNextVisibleChild( indexOfResizer );
var prevChildActualSize = prevChild.TransformActualSizeToAncestor();
var nextChildActualSize = nextChild.TransformActualSizeToAncestor();
var nextChildActualSize = (nextChild != null) ? nextChild.TransformActualSizeToAncestor() : new Size();
var prevChildModel = ( ILayoutPositionableElement )( prevChild as ILayoutControl ).Model;
var nextChildModel = ( ILayoutPositionableElement )( nextChild as ILayoutControl ).Model;
var nextChildModel = (nextChild != null) ? ( ILayoutPositionableElement )( nextChild as ILayoutControl ).Model : null;
Point ptTopLeftScreen = prevChild.PointToScreenDPIWithoutFlowDirection( new Point() );
@ -498,8 +522,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
if( Orientation == System.Windows.Controls.Orientation.Horizontal )
{
var nextChildDockMinWidth = (nextChildModel != null) ? nextChildModel.DockMinWidth : 0d;
actualSize = new Size(
prevChildActualSize.Width - prevChildModel.DockMinWidth + splitter.ActualWidth + nextChildActualSize.Width - nextChildModel.DockMinWidth,
prevChildActualSize.Width - prevChildModel.DockMinWidth + splitter.ActualWidth + nextChildActualSize.Width - nextChildDockMinWidth,
nextChildActualSize.Height );
_resizerGhost.Width = splitter.ActualWidth;
@ -508,9 +534,11 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
else
{
var nextChildDockMinHeight = ( nextChildModel != null ) ? nextChildModel.DockMinHeight : 0d;
actualSize = new Size(
prevChildActualSize.Width,
prevChildActualSize.Height - prevChildModel.DockMinHeight + splitter.ActualHeight + nextChildActualSize.Height - nextChildModel.DockMinHeight );
prevChildActualSize.Height - prevChildModel.DockMinHeight + splitter.ActualHeight + nextChildActualSize.Height - nextChildDockMinHeight );
_resizerGhost.Height = splitter.ActualHeight;
_resizerGhost.Width = actualSize.Width;

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridResizerControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

59
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutItem.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -94,9 +95,15 @@ namespace Xceed.Wpf.AvalonDock.Controls
_view = new ContentPresenter();
_view.SetBinding( ContentPresenter.ContentProperty, new Binding( "Content" ) { Source = LayoutElement } );
_view.SetBinding( ContentPresenter.ContentTemplateProperty, new Binding( "LayoutItemTemplate" ) { Source = LayoutElement.Root.Manager } );
_view.SetBinding( ContentPresenter.ContentTemplateSelectorProperty, new Binding( "LayoutItemTemplateSelector" ) { Source = LayoutElement.Root.Manager } );
LayoutElement.Root.Manager.InternalAddLogicalChild( _view );
if( ( LayoutElement != null ) && ( LayoutElement.Root != null ) )
{
_view.SetBinding( ContentPresenter.ContentTemplateProperty, new Binding( "LayoutItemTemplate" ) { Source = LayoutElement.Root.Manager } );
_view.SetBinding( ContentPresenter.ContentTemplateSelectorProperty, new Binding( "LayoutItemTemplateSelector" ) { Source = LayoutElement.Root.Manager } );
if( LayoutElement.Root.Manager != null )
{
LayoutElement.Root.Manager.InternalAddLogicalChild( _view );
}
}
}
return _view;
@ -332,6 +339,20 @@ namespace Xceed.Wpf.AvalonDock.Controls
#endregion
#region CanClose
/// <summary>
@ -1139,25 +1160,25 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected virtual void SetDefaultBindings()
{
if( CloseCommand == null )
CloseCommand = _defaultCloseCommand;
this.SetCurrentValue( LayoutItem.CloseCommandProperty, _defaultCloseCommand );
if( FloatCommand == null )
FloatCommand = _defaultFloatCommand;
this.SetCurrentValue( LayoutItem.FloatCommandProperty, _defaultFloatCommand );
if( DockAsDocumentCommand == null )
DockAsDocumentCommand = _defaultDockAsDocumentCommand;
this.SetCurrentValue( LayoutItem.DockAsDocumentCommandProperty, _defaultDockAsDocumentCommand );
if( CloseAllButThisCommand == null )
CloseAllButThisCommand = _defaultCloseAllButThisCommand;
this.SetCurrentValue( LayoutItem.CloseAllButThisCommandProperty, _defaultCloseAllButThisCommand );
if( CloseAllCommand == null )
CloseAllCommand = _defaultCloseAllCommand;
this.SetCurrentValue( LayoutItem.CloseAllCommandProperty, _defaultCloseAllCommand );
if( ActivateCommand == null )
ActivateCommand = _defaultActivateCommand;
this.SetCurrentValue( LayoutItem.ActivateCommandProperty, _defaultActivateCommand );
if( NewVerticalTabGroupCommand == null )
NewVerticalTabGroupCommand = _defaultNewVerticalTabGroupCommand;
this.SetCurrentValue( LayoutItem.NewVerticalTabGroupCommandProperty, _defaultNewVerticalTabGroupCommand );
if( NewHorizontalTabGroupCommand == null )
NewHorizontalTabGroupCommand = _defaultNewHorizontalTabGroupCommand;
this.SetCurrentValue( LayoutItem.NewHorizontalTabGroupCommandProperty, _defaultNewHorizontalTabGroupCommand );
if( MoveToNextTabGroupCommand == null )
MoveToNextTabGroupCommand = _defaultMoveToNextTabGroupCommand;
this.SetCurrentValue( LayoutItem.MoveToNextTabGroupCommandProperty, _defaultMoveToNextTabGroupCommand );
if( MoveToPreviousTabGroupCommand == null )
MoveToPreviousTabGroupCommand = _defaultMoveToPreviousTabGroupCommand;
this.SetCurrentValue( LayoutItem.MoveToPreviousTabGroupCommandProperty, _defaultMoveToPreviousTabGroupCommand );
IsSelected = LayoutElement.IsSelected;

75
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutPanelControl.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -63,34 +64,34 @@ namespace Xceed.Wpf.AvalonDock.Controls
( childContainerModel.IsOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>() ||
childContainerModel.ContainsChildOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>() ) )
{
childPositionableModel.DockWidth = new GridLength( 1.0, GridUnitType.Star );
// childPositionableModel.DockWidth = new GridLength( 1.0, GridUnitType.Star );
}
else if( childPositionableModel != null && childPositionableModel.DockWidth.IsStar )
else if( (childPositionableModel != null) && childPositionableModel.DockWidth.IsStar )
{
var childPositionableModelWidthActualSize = childPositionableModel as ILayoutPositionableElementWithActualSize;
if( childPositionableModelWidthActualSize.ActualWidth == 0d )
continue;
var widthToSet = Math.Max( childPositionableModelWidthActualSize.ActualWidth, childPositionableModel.DockMinWidth );
widthToSet = Math.Min( widthToSet, ActualWidth / 2.0 );
widthToSet = Math.Max( widthToSet, childPositionableModel.DockMinWidth );
childPositionableModel.DockWidth = new GridLength(
widthToSet,
GridUnitType.Pixel );
}
}
}
else
{
for( int i = 0; i < _model.Children.Count; i++ )
{
var childPositionableModel = _model.Children[ i ] as ILayoutPositionableElement;
if( !childPositionableModel.DockWidth.IsStar )
{
childPositionableModel.DockWidth = new GridLength( 1.0, GridUnitType.Star );
childPositionableModel.DockWidth = new GridLength( double.IsNaN( widthToSet ) ? ActualWidth / 2.0 : widthToSet, GridUnitType.Pixel );
}
}
}
//else
//{
// for( int i = 0; i < _model.Children.Count; i++ )
// {
// var childPositionableModel = _model.Children[ i ] as ILayoutPositionableElement;
// if( !childPositionableModel.DockWidth.IsStar )
// {
// childPositionableModel.DockWidth = new GridLength( 1.0, GridUnitType.Star );
// }
// }
//}
}
else
{
@ -105,31 +106,33 @@ namespace Xceed.Wpf.AvalonDock.Controls
( childContainerModel.IsOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>() ||
childContainerModel.ContainsChildOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>() ) )
{
childPositionableModel.DockHeight = new GridLength( 1.0, GridUnitType.Star );
//childPositionableModel.DockHeight = new GridLength( 1.0, GridUnitType.Star );
}
else if( childPositionableModel != null && childPositionableModel.DockHeight.IsStar )
else if( (childPositionableModel != null) && childPositionableModel.DockHeight.IsStar )
{
var childPositionableModelWidthActualSize = childPositionableModel as ILayoutPositionableElementWithActualSize;
if( childPositionableModelWidthActualSize.ActualHeight == 0d )
continue;
var heightToSet = Math.Max( childPositionableModelWidthActualSize.ActualHeight, childPositionableModel.DockMinHeight );
heightToSet = Math.Min( heightToSet, ActualHeight / 2.0 );
heightToSet = Math.Max( heightToSet, childPositionableModel.DockMinHeight );
childPositionableModel.DockHeight = new GridLength( heightToSet, GridUnitType.Pixel );
}
}
}
else
{
for( int i = 0; i < _model.Children.Count; i++ )
{
var childPositionableModel = _model.Children[ i ] as ILayoutPositionableElement;
if( !childPositionableModel.DockHeight.IsStar )
{
childPositionableModel.DockHeight = new GridLength( 1.0, GridUnitType.Star );
childPositionableModel.DockHeight = new GridLength( double.IsNaN( heightToSet ) ? ActualHeight / 2.0 : heightToSet, GridUnitType.Pixel );
}
}
}
//else
//{
// for( int i = 0; i < _model.Children.Count; i++ )
// {
// var childPositionableModel = _model.Children[ i ] as ILayoutPositionableElement;
// if( !childPositionableModel.DockHeight.IsStar )
// {
// childPositionableModel.DockHeight = new GridLength( 1.0, GridUnitType.Star );
// }
// }
//}
}
#endregion
}

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/MenuItemEx.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

209
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/NavigatorWindow.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
@ -20,6 +21,9 @@ using System.Windows;
using Xceed.Wpf.AvalonDock.Layout;
using Xceed.Wpf.AvalonDock.Themes;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Threading;
using System;
namespace Xceed.Wpf.AvalonDock.Controls
{
@ -56,8 +60,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
_manager = manager;
_internalSetSelectedDocument = true;
this.SetAnchorables( _manager.Layout.Descendents().OfType<LayoutAnchorable>().Where( a => a.IsVisible ).Select( d => ( LayoutAnchorableItem )_manager.GetLayoutItemFromModel( d ) ).ToArray() );
this.SetDocuments( _manager.Layout.Descendents().OfType<LayoutDocument>().OrderByDescending( d => d.LastActivationTimeStamp.GetValueOrDefault() ).Select( d => ( LayoutDocumentItem )_manager.GetLayoutItemFromModel( d ) ).ToArray() );
this.SetAnchorables( _manager.Layout.Descendents().OfType<LayoutAnchorable>().Where( a => a.IsVisible ).Select( d => (LayoutAnchorableItem)_manager.GetLayoutItemFromModel( d ) ).ToArray() );
this.SetDocuments( _manager.Layout.Descendents().OfType<LayoutDocument>().OrderByDescending( d => d.LastActivationTimeStamp.GetValueOrDefault() ).Select( d => (LayoutDocumentItem)_manager.GetLayoutItemFromModel( d ) ).ToArray() );
_internalSetSelectedDocument = false;
if( this.Documents.Length > 1 )
@ -101,7 +105,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
get
{
return ( LayoutDocumentItem[] )GetValue( DocumentsProperty );
return (LayoutDocumentItem[])GetValue( DocumentsProperty );
}
}
@ -113,7 +117,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
/// Anchorables Read-Only Dependency Property
/// </summary>
private static readonly DependencyPropertyKey AnchorablesPropertyKey = DependencyProperty.RegisterReadOnly( "Anchorables", typeof( IEnumerable<LayoutAnchorableItem> ), typeof( NavigatorWindow ),
new FrameworkPropertyMetadata( ( IEnumerable<LayoutAnchorableItem> )null ) );
new FrameworkPropertyMetadata( (IEnumerable<LayoutAnchorableItem>)null ) );
public static readonly DependencyProperty AnchorablesProperty = AnchorablesPropertyKey.DependencyProperty;
@ -125,7 +129,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
get
{
return ( IEnumerable<LayoutAnchorableItem> )GetValue( AnchorablesProperty );
return (IEnumerable<LayoutAnchorableItem>)GetValue( AnchorablesProperty );
}
}
@ -137,7 +141,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
/// SelectedDocument Dependency Property
/// </summary>
public static readonly DependencyProperty SelectedDocumentProperty = DependencyProperty.Register( "SelectedDocument", typeof( LayoutDocumentItem ), typeof( NavigatorWindow ),
new FrameworkPropertyMetadata( ( LayoutDocumentItem )null, new PropertyChangedCallback( OnSelectedDocumentChanged ) ) );
new FrameworkPropertyMetadata( (LayoutDocumentItem)null, new PropertyChangedCallback( OnSelectedDocumentChanged ) ) );
/// <summary>
/// Gets or sets the SelectedDocument property. This dependency property
@ -147,7 +151,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
get
{
return ( LayoutDocumentItem )GetValue( SelectedDocumentProperty );
return (LayoutDocumentItem)GetValue( SelectedDocumentProperty );
}
set
{
@ -160,7 +164,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
/// </summary>
private static void OnSelectedDocumentChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
( ( NavigatorWindow )d ).OnSelectedDocumentChanged( e );
( (NavigatorWindow)d ).OnSelectedDocumentChanged( e );
}
/// <summary>
@ -187,7 +191,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
/// SelectedAnchorable Dependency Property
/// </summary>
public static readonly DependencyProperty SelectedAnchorableProperty = DependencyProperty.Register( "SelectedAnchorable", typeof( LayoutAnchorableItem ), typeof( NavigatorWindow ),
new FrameworkPropertyMetadata( ( LayoutAnchorableItem )null, new PropertyChangedCallback( OnSelectedAnchorableChanged ) ) );
new FrameworkPropertyMetadata( (LayoutAnchorableItem)null, new PropertyChangedCallback( OnSelectedAnchorableChanged ) ) );
/// <summary>
/// Gets or sets the SelectedAnchorable property. This dependency property
@ -197,7 +201,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
get
{
return ( LayoutAnchorableItem )GetValue( SelectedAnchorableProperty );
return (LayoutAnchorableItem)GetValue( SelectedAnchorableProperty );
}
set
{
@ -210,7 +214,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
/// </summary>
private static void OnSelectedAnchorableChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
( ( NavigatorWindow )d ).OnSelectedAnchorableChanged( e );
( (NavigatorWindow)d ).OnSelectedAnchorableChanged( e );
}
/// <summary>
@ -249,26 +253,65 @@ namespace Xceed.Wpf.AvalonDock.Controls
bool shouldHandle = false;
// Press Tab to switch Selected LayoutContent.
if( e.Key == System.Windows.Input.Key.Tab)
if( ( e.Key == System.Windows.Input.Key.Tab )
|| ( e.Key == System.Windows.Input.Key.Left )
|| ( e.Key == System.Windows.Input.Key.Right )
|| ( e.Key == System.Windows.Input.Key.Up )
|| ( e.Key == System.Windows.Input.Key.Down ) )
{
// Selecting LayoutDocuments
if( _isSelectingDocument )
{
if( this.SelectedDocument != null )
{
// Jump to next LayoutDocument
var docIndex = this.Documents.IndexOf<LayoutDocumentItem>( this.SelectedDocument );
if( docIndex < (this.Documents.Length - 1) )
if( e.Key == System.Windows.Input.Key.Tab )
{
// Jump to next LayoutDocument
if( ( docIndex < ( this.Documents.Length - 1 ) )
|| ( this.Anchorables.Count() == 0 ) )
{
this.SelectNextDocument();
shouldHandle = true;
}
// Jump to first LayoutAnchorable
else if( this.Anchorables.Count() > 0 )
{
_isSelectingDocument = false;
this.InternalSetSelectedDocument( null );
this.InternalSetSelectedAnchorable( this.Anchorables.First() );
shouldHandle = true;
}
}
else if( e.Key == System.Windows.Input.Key.Down )
{
// Jump to next LayoutDocument
this.SelectNextDocument();
shouldHandle = true;
}
// Jump to first LayoutAnchorable
else if( this.Anchorables.Count() > 0 )
else if( e.Key == System.Windows.Input.Key.Up )
{
// Jump to previous LayoutDocument
this.SelectPreviousDocument();
shouldHandle = true;
}
else if( ( e.Key == System.Windows.Input.Key.Left ) || ( e.Key == System.Windows.Input.Key.Right ) )
{
_isSelectingDocument = false;
this.InternalSetSelectedDocument( null );
this.InternalSetSelectedAnchorable( this.Anchorables.First() );
if( this.Anchorables.Count() > 0 )
{
_isSelectingDocument = false;
this.InternalSetSelectedDocument( null );
if( docIndex < this.Anchorables.Count() )
{
var anchorablesArray = this.Anchorables.ToArray();
this.InternalSetSelectedAnchorable( anchorablesArray[ docIndex ] );
}
else
{
this.InternalSetSelectedAnchorable( this.Anchorables.Last() );
}
}
shouldHandle = true;
}
}
@ -287,19 +330,53 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( this.SelectedAnchorable != null )
{
// Jump to next LayoutAnchorable
var anchorableIndex = this.Anchorables.ToArray().IndexOf<LayoutAnchorableItem>( this.SelectedAnchorable );
if( anchorableIndex < (this.Anchorables.Count() - 1) )
if( e.Key == System.Windows.Input.Key.Tab )
{
// Jump to next LayoutAnchorable
if( ( anchorableIndex < ( this.Anchorables.Count() - 1 ) )
|| ( this.Documents.Length == 0 ) )
{
this.SelectNextAnchorable();
shouldHandle = true;
}
// Jump to first LayoutDocument
else if( this.Documents.Length > 0 )
{
_isSelectingDocument = true;
this.InternalSetSelectedAnchorable( null );
this.InternalSetSelectedDocument( this.Documents[ 0 ] );
shouldHandle = true;
}
}
else if( e.Key == System.Windows.Input.Key.Down )
{
// Jump to next LayoutAnchorable
this.SelectNextAnchorable();
shouldHandle = true;
}
// Jump to first LayoutDocument
else if( this.Documents.Length > 0 )
else if( e.Key == System.Windows.Input.Key.Up )
{
_isSelectingDocument = true;
this.InternalSetSelectedAnchorable( null );
this.InternalSetSelectedDocument( this.Documents[ 0 ] );
// Jump to previous LayoutDocument
this.SelectPreviousAnchorable();
shouldHandle = true;
}
else if( ( e.Key == System.Windows.Input.Key.Left ) || ( e.Key == System.Windows.Input.Key.Right ) )
{
if( this.Documents.Count() > 0 )
{
_isSelectingDocument = true;
this.InternalSetSelectedAnchorable( null );
if( anchorableIndex < this.Documents.Count() )
{
this.InternalSetSelectedDocument( this.Documents[ anchorableIndex ] );
}
else
{
this.InternalSetSelectedDocument( this.Documents.Last() );
}
}
shouldHandle = true;
}
}
@ -324,7 +401,11 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnPreviewKeyUp( System.Windows.Input.KeyEventArgs e )
{
if( e.Key != System.Windows.Input.Key.Tab )
if( ( e.Key != System.Windows.Input.Key.Tab )
&& ( e.Key != System.Windows.Input.Key.Left )
&& ( e.Key != System.Windows.Input.Key.Right )
&& ( e.Key != System.Windows.Input.Key.Up )
&& ( e.Key != System.Windows.Input.Key.Down ) )
{
this.Close();
@ -332,6 +413,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
this.SelectedDocument.ActivateCommand.CanExecute( null ) )
{
this.SelectedDocument.ActivateCommand.Execute( null );
this.FocusContent( this.SelectedDocument );
}
if( this.SelectedDocument == null &&
@ -339,6 +421,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
this.SelectedAnchorable.ActivateCommand.CanExecute( null ) )
{
this.SelectedAnchorable.ActivateCommand.Execute( null );
this.FocusContent( this.SelectedAnchorable );
}
e.Handled = true;
@ -398,7 +481,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( _manager.Theme is DictionaryTheme )
{
currentThemeResourceDictionary = ( ( DictionaryTheme )_manager.Theme ).ThemeResourceDictionary;
currentThemeResourceDictionary = ( (DictionaryTheme)_manager.Theme ).ThemeResourceDictionary;
this.Resources.MergedDictionaries.Add( currentThemeResourceDictionary );
}
else
@ -422,6 +505,20 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
}
internal void SelectPreviousDocument()
{
if( this.SelectedDocument != null )
{
int docIndex = this.Documents.IndexOf<LayoutDocumentItem>( this.SelectedDocument );
docIndex--;
if( docIndex == -1 )
{
docIndex = this.Documents.Length - 1;
}
this.InternalSetSelectedDocument( this.Documents[ docIndex ] );
}
}
internal void SelectNextAnchorable()
{
if( this.SelectedAnchorable != null )
@ -437,6 +534,21 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
}
internal void SelectPreviousAnchorable()
{
if( this.SelectedAnchorable != null )
{
var anchorablesArray = this.Anchorables.ToArray();
int anchorableIndex = anchorablesArray.IndexOf<LayoutAnchorableItem>( this.SelectedAnchorable );
anchorableIndex--;
if( anchorableIndex == -1 )
{
anchorableIndex = this.Anchorables.Count() - 1;
}
this.InternalSetSelectedAnchorable( anchorablesArray[ anchorableIndex ] );
}
}
#endregion
#region Private Methods
@ -465,15 +577,40 @@ namespace Xceed.Wpf.AvalonDock.Controls
}
}
private void FocusContent( LayoutItem layoutItem )
{
if( ( layoutItem == null ) || ( layoutItem.LayoutElement == null ) )
return;
// Set focus inside selected LayoutItem.
var content = layoutItem.LayoutElement.Content as UIElement;
if( content != null )
{
this.Dispatcher.BeginInvoke( DispatcherPriority.Input, new Action( () =>
{
if( content.Focusable )
{
content.Focus();
}
else
{
content.MoveFocus( new TraversalRequest( FocusNavigationDirection.Next ) );
}
}
) );
}
}
private void OnLoaded( object sender, RoutedEventArgs e )
{
this.Loaded -= new RoutedEventHandler( OnLoaded );
if( ( _documentListBox != null ) && (this.SelectedDocument != null) )
if( ( _documentListBox != null ) && ( this.SelectedDocument != null ) )
{
_documentListBox.Focus();
}
else if( ( _anchorableListBox != null ) && (this.SelectedAnchorable != null) )
else if( ( _anchorableListBox != null ) && ( this.SelectedAnchorable != null ) )
{
_anchorableListBox.Focus();
}

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/OverlayArea.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/OverlayWindow.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/OverlayWindowDropTarget.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/OverlayWindowDropTargetType.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/ReentrantFlag.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/ComGuids.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/Debug.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/DoubleUtil.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/DpiHelper.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/ErrorCodes.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/MessageWindow.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/NativeMethods.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/ShellProvider.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/StreamHelper.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/Utilities.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/Standard/Verify.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/SystemCommands.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/SystemParameters2.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/WindowChrome.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

13
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/Shell/WindowChromeWorker.cs

@ -1,14 +1,15 @@
/*************************************************************************************
Toolkit for WPF
Extended WPF Toolkit
Copyright (C) 2007-2020 Xceed Software Inc.
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
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save