Browse Source

V4.0.2 Released

pull/1669/head 4.0.2
Simon Boucher 5 years ago
parent
commit
59dd599ec0
  1. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml
  2. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml
  3. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml
  4. 80
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs
  5. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs
  6. 28
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs
  7. 3
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutCachePaneControl.cs
  8. 26
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentControl.cs
  9. 3
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs
  10. 28
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneControl.cs
  11. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs
  12. 15
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs
  13. 66
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/DockingManager.cs
  14. 20
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Extentions.cs
  15. 32
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/ILayoutInitialContainer.cs
  16. 25
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs
  17. 109
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs
  18. 17
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs
  19. 9
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Serialization/LayoutSerializer.cs
  20. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.Designer.cs
  21. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx
  22. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.de.resx
  23. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.es.resx
  24. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.fr.resx
  25. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.hu.resx
  26. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.it.resx
  27. 17
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.Designer.cs
  28. 183
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.resx
  29. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.pt-BR.resx
  30. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.resx
  31. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ro.resx
  32. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ru.resx
  33. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.sv.resx
  34. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx
  35. 1438
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Default.xaml
  36. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinAutoHide_White.png
  37. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinClose_White.png
  38. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinDocMenu_White.png
  39. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinMaximize_White.png
  40. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinMenu_White.png
  41. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinRestore_White.png
  42. 1422
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/generic.xaml
  43. 31
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj
  44. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MultiLineTextEditorView.xaml.txt
  45. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/SwitchPanelView.xaml.txt
  46. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ThemingAvalonDockView.xaml.txt
  47. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ThemingDataGridView.xaml.txt
  48. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ThemingExtendedToolkitView.xaml.txt
  49. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ThemingListBoxView.xaml.txt
  50. 3
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/WindowContainerView.xaml.txt
  51. 8
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ZoomboxView.xaml.txt
  52. 35
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/MainWindow.xaml
  53. 8
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Resources/TextBlockStyles.xaml
  54. 3
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/BusyIndicator/Resources/Common.xaml
  55. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Panels/Views/SwitchPanelView.xaml
  56. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/MultiLineTextEditorView.xaml
  57. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingAvalonDockView.xaml
  58. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingDataGridView.xaml
  59. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingExtendedToolkitView.xaml
  60. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingListBoxView.xaml
  61. 3
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Window/Views/WindowContainerView.xaml
  62. 8
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Zoombox/Views/ZoomboxView.xaml
  63. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Images/Delete16_White.png
  64. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Images/Duplicate_White.png
  65. 20
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Implementation/CollectionControlDialog.xaml.cs
  66. 7
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Core/VersionResourceDictionary.cs
  67. 5
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DateTimePicker/Implementation/DateTimePicker.cs
  68. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs
  69. 5
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Magnifier/Themes/Generic.xaml
  70. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Images/Notes16.png
  71. 14
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Themes/Aero2.NormalColor.xaml
  72. 9
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Themes/Generic.xaml
  73. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/DateTimeUpDownBase.cs
  74. 30
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs
  75. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/ClearFilter16_Green.png
  76. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/ClearFilter16_White.png
  77. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/SortAscending16_White.png
  78. 9
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs
  79. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bold_White16.png
  80. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bullets_White16.png
  81. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/CenterAlign_White16.png
  82. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/FontColorPicker_White16.png
  83. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Italic_White16.png
  84. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/LeftAlign_White16.png
  85. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Numbering_White16.png
  86. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/RightAlign_White16.png
  87. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/TextHighlightColorPicker_White16.png
  88. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Underline_White16.png
  89. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs
  90. 21
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Generic.xaml
  91. 30
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs
  92. 48
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj
  93. 2
      ExtendedWPFToolkitSolution/Xceed.Wpf.Toolkit.sln

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

@ -131,7 +131,6 @@
CornerRadius="2">
<ContentPresenter x:Name="PART_SelectedContentHost"
ContentSource="SelectedContent"
ContentTemplate="{TemplateBinding ContentTemplate}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
</Border>
@ -324,7 +323,6 @@
KeyboardNavigation.TabNavigation="Cycle">
<ContentPresenter x:Name="PART_SelectedContentHost"
ContentSource="SelectedContent"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{TemplateBinding Padding}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
@ -509,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>

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

@ -163,7 +163,6 @@
Padding="0,1,0,2">
<ContentPresenter x:Name="PART_SelectedContentHost"
ContentSource="SelectedContent"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="0,2,0,2"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
@ -334,7 +333,6 @@
KeyboardNavigation.TabNavigation="Cycle">
<ContentPresenter x:Name="PART_SelectedContentHost"
ContentSource="SelectedContent"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{TemplateBinding Padding}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
@ -518,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>

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

@ -196,7 +196,6 @@
Padding="0,1,0,2">
<ContentPresenter x:Name="PART_SelectedContentHost"
ContentSource="SelectedContent"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="0,2,0,2"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
@ -417,7 +416,6 @@
KeyboardNavigation.TabNavigation="Cycle">
<ContentPresenter x:Name="PART_SelectedContentHost"
ContentSource="SelectedContent"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{TemplateBinding Padding}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
@ -605,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>

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

@ -61,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 )
@ -97,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 )
@ -133,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 )
@ -168,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 )
@ -247,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 )
{
@ -286,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 )
{
@ -325,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 )
{
@ -365,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 )
{

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

@ -347,6 +347,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
var anchorableLayoutItem = manager.GetLayoutItemFromModel( anchorable ) as LayoutAnchorableItem;
anchorableLayoutItem.HideCommand.Execute( parameter );
}
this.BringFocusOnDockingManager();
}
#endregion

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

@ -82,13 +82,17 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
base.OnMouseLeftButtonDown( e );
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.OriginalSource is Visual )
{
if (!e.Handled && (_model != null) && (_model.SelectedContent != null) )
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 ) )
{
_model.SelectedContent.IsActive = true;
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
}
}
}
@ -97,13 +101,17 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
base.OnMouseRightButtonDown( e );
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.OriginalSource is Visual )
{
if (!e.Handled && (_model != null) && (_model.SelectedContent != null))
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 ) )
{
_model.SelectedContent.IsActive = true;
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
}
}
}

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

@ -16,9 +16,11 @@
***********************************************************************************/
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
@ -96,7 +98,6 @@ namespace Xceed.Wpf.AvalonDock.Controls
}

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

@ -163,23 +163,33 @@ namespace Xceed.Wpf.AvalonDock.Controls
protected override void OnPreviewMouseLeftButtonDown( MouseButtonEventArgs e )
{
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.OriginalSource is Visual )
{
this.SetIsActive();
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 OnPreviewMouseRightButtonDown( MouseButtonEventArgs e )
{
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.OriginalSource is Visual )
{
this.SetIsActive();
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 );
}

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

@ -59,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 );
}
}

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

@ -93,13 +93,17 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
base.OnMouseLeftButtonDown( e );
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.OriginalSource is Visual )
{
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
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 ) )
{
_model.SelectedContent.IsActive = true;
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
}
}
}
@ -108,13 +112,17 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
base.OnMouseRightButtonDown( e );
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.OriginalSource is Visual )
{
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
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 ) )
{
_model.SelectedContent.IsActive = true;
if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
{
_model.SelectedContent.IsActive = true;
}
}
}
}

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

@ -290,6 +290,8 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
root.FloatingWindows.Remove( this.Model as LayoutFloatingWindow );
}
this.BringFocusOnDockingManager();
}
protected override void OnInitialized( EventArgs e )
@ -502,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

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

@ -394,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;
@ -406,15 +406,18 @@ namespace Xceed.Wpf.AvalonDock.Controls
var prevChildActualSize = prevChild.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 = (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( prevChildActualSize.Width + delta, GridUnitType.Star );
prevChildModel.DockWidth = new GridLength( ((prevChildActualSize.Width + delta) / totalActualSize.Width) * totalStarSize.Width, GridUnitType.Star );
}
else
{
@ -428,7 +431,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( nextChildModel.DockWidth.IsStar )
{
nextChildModel.DockWidth = new GridLength( nextChildActualSize.Width - delta, GridUnitType.Star );
nextChildModel.DockWidth = new GridLength( ((nextChildActualSize.Width - delta) / totalActualSize.Width) * totalStarSize.Width, GridUnitType.Star );
}
else
{
@ -443,7 +446,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( prevChildModel.DockHeight.IsStar )
{
prevChildModel.DockHeight = new GridLength( prevChildActualSize.Height + delta, GridUnitType.Star );
prevChildModel.DockHeight = new GridLength( ((prevChildActualSize.Height + delta) / totalActualSize.Height) * totalStarSize.Height, GridUnitType.Star );
}
else
{
@ -457,7 +460,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
if( nextChildModel.DockHeight.IsStar )
{
nextChildModel.DockHeight = new GridLength( nextChildActualSize.Height - delta, GridUnitType.Star );
nextChildModel.DockHeight = new GridLength( ((nextChildActualSize.Height - delta) / totalActualSize.Height) * totalStarSize.Height, GridUnitType.Star );
}
else
{

66
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/DockingManager.cs

@ -2143,7 +2143,7 @@ namespace Xceed.Wpf.AvalonDock
{
newFW.WindowState = WindowState.Maximized;
}
} ), DispatcherPriority.Send );
} ), DispatcherPriority.DataBind );
return newFW;
}
@ -2365,7 +2365,7 @@ namespace Xceed.Wpf.AvalonDock
content.IsActive = true;
}
internal void ShowNavigatorWindow()
protected internal virtual void ShowNavigatorWindow()
{
if( _navigatorWindow == null )
{
@ -3259,6 +3259,8 @@ namespace Xceed.Wpf.AvalonDock
contentModelAsAnchorable.IsAutoHidden )
contentModelAsAnchorable.ToggleAutoHide();
this.UpdateStarSize( contentModel );
var parentPane = contentModel.Parent as ILayoutPane;
var parentPaneAsPositionableElement = contentModel.Parent as ILayoutPositionableElement;
var parentPaneAsWithActualSize = contentModel.Parent as ILayoutPositionableElementWithActualSize;
@ -3351,6 +3353,66 @@ namespace Xceed.Wpf.AvalonDock
return fwc;
}
private void UpdateStarSize( LayoutContent contentModel )
{
if( contentModel == null )
return;
var parentPane = contentModel.Parent as ILayoutPositionableElement;
if( parentPane != null)
{
// Reset Dock Size of floating LayoutContent
if( parentPane.DockWidth.IsStar )
{
parentPane.DockWidth = new GridLength( 1d, GridUnitType.Star );
}
if( parentPane.DockHeight.IsStar )
{
parentPane.DockHeight = new GridLength( 1d, GridUnitType.Star );
}
var grandParentPaneOrientation = parentPane.Parent as ILayoutOrientableGroup;
var grandParentPane = parentPane.Parent as ILayoutPositionableElement;
if( (grandParentPaneOrientation != null) && (grandParentPane != null) )
{
if( grandParentPaneOrientation.Orientation == Orientation.Horizontal )
{
// Reset Dock Width of remaining LayoutContent
if( grandParentPane.DockWidth.IsStar )
{
var grandParentPaneContainer = parentPane.Parent as ILayoutContainer;
if( grandParentPaneContainer != null )
{
var children = grandParentPaneContainer.Children.Where( child => !child.Equals( parentPane ) ).Cast<ILayoutPositionableElement>().Where( child => child.DockWidth.IsStar );
var childrenTotalWidth = children.Sum( child => child.DockWidth.Value );
foreach( var child in children )
{
child.DockWidth = new GridLength( child.DockWidth.Value / childrenTotalWidth, GridUnitType.Star );
}
}
}
}
else
{
// Reset Dock Height of remaining LayoutContent
if( grandParentPane.DockHeight.IsStar )
{
var grandParentPaneContainer = parentPane.Parent as ILayoutContainer;
if( grandParentPaneContainer != null )
{
var children = grandParentPaneContainer.Children.Where( child => !child.Equals( parentPane ) ).Cast<ILayoutPositionableElement>().Where( child => child.DockHeight.IsStar );
var childrenTotalHeight = children.Sum( child => child.DockHeight.Value );
foreach( var child in children )
{
child.DockHeight = new GridLength( child.DockHeight.Value / childrenTotalHeight, GridUnitType.Star );
}
}
}
}
}
}
}
private void AnchorableContextMenu_Opened( object sender, RoutedEventArgs e )
{
var anchorableContextMenu = sender as ContextMenu;

20
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Extentions.cs

@ -113,14 +113,30 @@ namespace Xceed.Wpf.AvalonDock.Layout
if( layoutPanel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
if( currentChildID < 0 )
{
return AnchorSide.Right;
return ( currentChildID <= ( childrenCount / 2 ) ) ? AnchorSide.Left : AnchorSide.Right;
}
else
{
if( childrenCount == 1 )
return AnchorSide.Left;
return ( currentChildID < ( childrenCount / 2d ) ) ? AnchorSide.Left : AnchorSide.Right;
}
}
else
{
if( currentChildID < 0 )
{
return AnchorSide.Bottom;
return ( currentChildID <= ( childrenCount / 2 ) ) ? AnchorSide.Top : AnchorSide.Bottom;
}
else
{
if( childrenCount == 1 )
return AnchorSide.Top;
return ( currentChildID < ( childrenCount / 2d ) ) ? AnchorSide.Top : AnchorSide.Bottom;
}
}
}
}

32
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/ILayoutInitialContainer.cs

@ -0,0 +1,32 @@
/*************************************************************************************
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
***********************************************************************************/
namespace Xceed.Wpf.AvalonDock.Layout
{
interface ILayoutInitialContainer
{
ILayoutContainer InitialContainer
{
get; set;
}
string InitialContainerId
{
get; set;
}
}
}

25
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs

@ -415,14 +415,16 @@ namespace Xceed.Wpf.AvalonDock.Layout
RaisePropertyChanging( "IsHidden" );
RaisePropertyChanging( "IsVisible" );
//if (Parent is ILayoutPane)
this.InitialContainer = this.PreviousContainer as ILayoutPane;
this.InitialContainerIndex = this.PreviousContainerIndex;
this.InitialContainerId = this.PreviousContainerId;
var parentAsGroup = this.Parent as ILayoutGroup;
this.PreviousContainer = parentAsGroup;
if( parentAsGroup != null )
{
var parentAsGroup = Parent as ILayoutGroup;
PreviousContainer = parentAsGroup;
if( parentAsGroup != null )
{
PreviousContainerIndex = parentAsGroup.IndexOfChild( this );
}
this.PreviousContainerIndex = parentAsGroup.IndexOfChild( this );
}
if( this.Root != null )
{
@ -478,8 +480,13 @@ namespace Xceed.Wpf.AvalonDock.Layout
}
}
PreviousContainer = null;
PreviousContainerIndex = -1;
// When InitialContainer exists, set it to PreviousContainer in order to dock in expected position.
this.PreviousContainer = ( this.InitialContainer != null) ? this.InitialContainer : null;
this.PreviousContainerIndex = ( this.InitialContainerIndex != -1 ) ? this.InitialContainerIndex : -1;
this.InitialContainer = null;
this.InitialContainerIndex = -1;
this.InitialContainerId = null;
RaisePropertyChanged( "IsVisible" );
RaisePropertyChanged( "IsHidden" );

109
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs

@ -29,7 +29,7 @@ namespace Xceed.Wpf.AvalonDock.Layout
{
[ContentProperty( "Content" )]
[Serializable]
public abstract class LayoutContent : LayoutElement, IXmlSerializable, ILayoutElementForFloatingWindow, IComparable<LayoutContent>, ILayoutPreviousContainer
public abstract class LayoutContent : LayoutElement, IXmlSerializable, ILayoutElementForFloatingWindow, IComparable<LayoutContent>, ILayoutPreviousContainer, ILayoutInitialContainer
{
#region Constructors
@ -311,6 +311,66 @@ namespace Xceed.Wpf.AvalonDock.Layout
#endregion
#region InitialContainer
[field: NonSerialized]
private ILayoutContainer _initialContainer = null;
[XmlIgnore]
ILayoutContainer ILayoutInitialContainer.InitialContainer
{
get
{
return _initialContainer;
}
set
{
if( _initialContainer != value )
{
_initialContainer = value;
RaisePropertyChanged( "InitialContainer" );
var paneSerializable = _initialContainer as ILayoutPaneSerializable;
if( paneSerializable != null &&
paneSerializable.Id == null )
paneSerializable.Id = Guid.NewGuid().ToString();
}
}
}
internal ILayoutContainer InitialContainer
{
get
{
return ( ( ILayoutInitialContainer )this ).InitialContainer;
}
set
{
( ( ILayoutInitialContainer )this ).InitialContainer = value;
}
}
[XmlIgnore]
string ILayoutInitialContainer.InitialContainerId
{
get;
set;
}
internal string InitialContainerId
{
get
{
return ( ( ILayoutInitialContainer )this ).InitialContainerId;
}
set
{
( ( ILayoutInitialContainer )this ).InitialContainerId = value;
}
}
#endregion
#region PreviousContainerIndex
[field: NonSerialized]
private int _previousContainerIndex = -1;
@ -333,6 +393,28 @@ namespace Xceed.Wpf.AvalonDock.Layout
#endregion
#region InitialContainerIndex
[field: NonSerialized]
private int _initialContainerIndex = -1;
[XmlIgnore]
internal int InitialContainerIndex
{
get
{
return _initialContainerIndex;
}
set
{
if( _initialContainerIndex != value )
{
_initialContainerIndex = value;
RaisePropertyChanged( "InitialContainerIndex" );
}
}
}
#endregion
#region LastActivationTimeStamp
private DateTime? _lastActivationTimeStamp = null;
@ -655,6 +737,10 @@ namespace Xceed.Wpf.AvalonDock.Layout
PreviousContainerId = reader.Value;
if( reader.MoveToAttribute( "PreviousContainerIndex" ) )
PreviousContainerIndex = int.Parse( reader.Value );
if( reader.MoveToAttribute( "InitialContainerId" ) )
InitialContainerId = reader.Value;
if( reader.MoveToAttribute( "InitialContainerIndex" ) )
InitialContainerIndex = int.Parse( reader.Value );
if( reader.MoveToAttribute( "FloatingLeft" ) )
FloatingLeft = double.Parse( reader.Value, CultureInfo.InvariantCulture );
@ -726,6 +812,15 @@ namespace Xceed.Wpf.AvalonDock.Layout
writer.WriteAttributeString( "PreviousContainerIndex", _previousContainerIndex.ToString() );
}
}
if( _initialContainer != null )
{
var paneSerializable = _initialContainer as ILayoutPaneSerializable;
if( paneSerializable != null )
{
writer.WriteAttributeString( "InitialContainerId", paneSerializable.Id );
writer.WriteAttributeString( "InitialContainerIndex", _initialContainerIndex.ToString() );
}
}
}
@ -856,15 +951,17 @@ namespace Xceed.Wpf.AvalonDock.Layout
InternalDock();
}
Root.CollectGarbage();
if( this.Root != null )
{
Root.CollectGarbage();
}
}
#endregion
#region Internal Methods
@ -908,6 +1005,7 @@ namespace Xceed.Wpf.AvalonDock.Layout
Closing( this, args );
}
protected virtual void InternalDock()
{
}
@ -930,6 +1028,7 @@ namespace Xceed.Wpf.AvalonDock.Layout
/// Hanlde the Hiding event for the LayoutAnchorable to cancel the hide operation.</remarks>
public event EventHandler<CancelEventArgs> Closing;
#endregion
#endregion
}
}

17
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs

@ -440,6 +440,11 @@ namespace Xceed.Wpf.AvalonDock.Layout
{
content.PreviousContainer = null;
}
foreach( var content in this.Descendents().OfType<ILayoutInitialContainer>().Where( c => c.InitialContainer != null &&
( c.InitialContainer.Parent == null || c.InitialContainer.Parent.Root != this ) ) )
{
content.InitialContainer = null;
}
//for each pane that is empty
foreach( var emptyPane in this.Descendents().OfType<ILayoutPane>().Where( p => p.ChildrenCount == 0 ) )
@ -462,7 +467,8 @@ namespace Xceed.Wpf.AvalonDock.Layout
continue;
//...if this empty panes is not referenced by anyone, than removes it from its parent container
if( !this.Descendents().OfType<ILayoutPreviousContainer>().Any( c => c.PreviousContainer == emptyPane ) )
if( !this.Descendents().OfType<ILayoutPreviousContainer>().Any( c => c.PreviousContainer == emptyPane )
&& !this.Descendents().OfType<ILayoutInitialContainer>().Any( c => c.InitialContainer == emptyPane ) )
{
var parentGroup = emptyPane.Parent as ILayoutContainer;
parentGroup.RemoveChild( emptyPane );
@ -493,7 +499,8 @@ namespace Xceed.Wpf.AvalonDock.Layout
foreach( var emptyPaneGroup in this.Descendents().OfType<LayoutPanel>().Where( p => p.ChildrenCount == 0 ) )
{
//...if this empty layout panel is not referenced by anyone, than removes it from its parent container
if( !this.Descendents().OfType<ILayoutPreviousContainer>().Any( c => c.PreviousContainer == emptyPaneGroup ) )
if( !this.Descendents().OfType<ILayoutPreviousContainer>().Any( c => c.PreviousContainer == emptyPaneGroup )
&& !this.Descendents().OfType<ILayoutInitialContainer>().Any( c => c.InitialContainer == emptyPaneGroup ) )
{
var parentGroup = emptyPaneGroup.Parent as ILayoutContainer;
parentGroup.RemoveChild( emptyPaneGroup );
@ -509,7 +516,8 @@ namespace Xceed.Wpf.AvalonDock.Layout
foreach( var emptyPaneGroup in this.Descendents().OfType<LayoutFloatingWindow>().Where( p => p.ChildrenCount == 0 ) )
{
//...if this empty floating window is not referenced by anyone, than removes it from its parent container
if( !this.Descendents().OfType<ILayoutPreviousContainer>().Any( c => c.PreviousContainer == emptyPaneGroup ) )
if( !this.Descendents().OfType<ILayoutPreviousContainer>().Any( c => c.PreviousContainer == emptyPaneGroup )
&& !this.Descendents().OfType<ILayoutInitialContainer>().Any( c => c.InitialContainer == emptyPaneGroup ) )
{
var parentGroup = emptyPaneGroup.Parent as ILayoutContainer;
parentGroup.RemoveChild( emptyPaneGroup );
@ -525,7 +533,8 @@ namespace Xceed.Wpf.AvalonDock.Layout
foreach( var emptyPaneGroup in this.Descendents().OfType<LayoutAnchorGroup>().Where( p => p.ChildrenCount == 0 ) )
{
//...if this empty Pane Group is not referenced by anyone, than removes it from its parent container
if( !this.Descendents().OfType<ILayoutPreviousContainer>().Any( c => c.PreviousContainer == emptyPaneGroup ) )
if( !this.Descendents().OfType<ILayoutPreviousContainer>().Any( c => c.PreviousContainer == emptyPaneGroup )
&& !this.Descendents().OfType<ILayoutInitialContainer>().Any( c => c.InitialContainer == emptyPaneGroup ) )
{
var parentGroup = emptyPaneGroup.Parent as ILayoutContainer;
parentGroup.RemoveChild( emptyPaneGroup );

9
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Serialization/LayoutSerializer.cs

@ -76,6 +76,15 @@ namespace Xceed.Wpf.AvalonDock.Layout.Serialization
lcToAttach.PreviousContainer = paneContainerToAttach as ILayoutContainer;
}
foreach( var lcToAttach in layout.Descendents().OfType<ILayoutInitialContainer>().Where( lc => lc.InitialContainerId != null ) )
{
var paneContainerToAttach = layout.Descendents().OfType<ILayoutPaneSerializable>().FirstOrDefault( lps => lps.Id == lcToAttach.InitialContainerId );
if( paneContainerToAttach == null )
throw new ArgumentException( string.Format( "Unable to find a pane with id ='{0}'", lcToAttach.InitialContainerId ) );
lcToAttach.InitialContainer = paneContainerToAttach as ILayoutContainer;
}
//now fix the content of the layoutcontents
foreach( var lcToFix in layout.Descendents().OfType<LayoutAnchorable>().Where( lc => lc.Content == null ).ToArray() )

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.Designer.cs

@ -36,7 +36,7 @@ namespace Xceed.Wpf.AvalonDock.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Resources {
@ -96,7 +96,7 @@ namespace Xceed.Wpf.AvalonDock.Properties {
}
/// <summary>
/// Looks up a localized string similar to Hide.
/// Looks up a localized string similar to Hide All.
/// </summary>
public static string Anchorable_BtnClose_Hint {
get {

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx

@ -124,7 +124,7 @@
<value>Skrývat automaticky</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Skrýt</value>
<value>Schovat vše</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Pozice okna</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.de.resx

@ -124,7 +124,7 @@
<value>Automatisch im Hintergrund</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Schließen</value>
<value>Versteck alles</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Fensterposition</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.es.resx

@ -124,7 +124,7 @@
<value>Esconder Automáticamente</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Esconder</value>
<value>Ocultar todo</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Posición de Ventana </value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.fr.resx

@ -124,7 +124,7 @@
<value>Cacher Automatiquement</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Cacher</value>
<value>Cacher Tout</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Position de la Fenêtre</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.hu.resx

@ -127,7 +127,7 @@
<value>Elrejtés</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Elhelyezkedés</value>
<value>Rejtsd el mindet</value>
</data>
<data name="Anchorable_Dock" xml:space="preserve">
<value>Dokkolás</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.it.resx

@ -124,7 +124,7 @@
<value>Nascondi Automaticamente</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Nascondi</value>
<value>Nascondi tutto</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Posizione della Finestra</value>

17
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.Designer.cs

@ -0,0 +1,17 @@
/*************************************************************************************
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
***********************************************************************************/

183
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.resx

@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Anchorable_AutoHide" xml:space="preserve">
<value>自動的に隠す</value>
</data>
<data name="Anchorable_BtnAutoHide_Hint" xml:space="preserve">
<value>自動的に隠す</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>すべて非表示</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>ウィンドウの位置</value>
</data>
<data name="Anchorable_Dock" xml:space="preserve">
<value>ドッキング</value>
</data>
<data name="Anchorable_DockAsDocument" xml:space="preserve">
<value>タブ付きドキュメントとしてドッキング</value>
</data>
<data name="Anchorable_Float" xml:space="preserve">
<value>フローティング</value>
</data>
<data name="Anchorable_Hide" xml:space="preserve">
<value>非表示</value>
</data>
<data name="Document_BtnPinned_Hint" xml:space="preserve">
<value>ピンステータスを切り替える</value>
</data>
<data name="Document_Close" xml:space="preserve">
<value>閉じる</value>
</data>
<data name="Document_CloseAll" xml:space="preserve">
<value>すべて閉じる</value>
</data>
<data name="Document_CloseAllButThis" xml:space="preserve">
<value>このウィンドウ以外すべて閉じる</value>
</data>
<data name="Document_CxMenu_Hint" xml:space="preserve">
<value>ウィンドウの位置</value>
</data>
<data name="Document_DockAsDocument" xml:space="preserve">
<value>タブ付きドキュメントとしてドッキング</value>
</data>
<data name="Document_Float" xml:space="preserve">
<value>フローティング</value>
</data>
<data name="Document_MoveToNextTabGroup" xml:space="preserve">
<value>次のタブグループに移動</value>
</data>
<data name="Document_MoveToPreviousTabGroup" xml:space="preserve">
<value>前のタブグループに移動</value>
</data>
<data name="Document_NewHorizontalTabGroup" xml:space="preserve">
<value>新しい水平タブグループ</value>
</data>
<data name="Document_NewVerticalTabGroup" xml:space="preserve">
<value>新しい垂直タブグループ</value>
</data>
<data name="Window_Maximize" xml:space="preserve">
<value>最大化</value>
</data>
<data name="Window_Restore" xml:space="preserve">
<value>元に戻す</value>
</data>
</root>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.pt-BR.resx

@ -124,7 +124,7 @@
<value>Esconder Automaticamente</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Esconder</value>
<value>Esconda tudo</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Posição da Janela</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.resx

@ -124,7 +124,7 @@
<value>Auto Hide</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Hide</value>
<value>Hide All</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Window Position</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ro.resx

@ -124,7 +124,7 @@
<value>Ascunde automat</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Ascunde</value>
<value>Ascunde tot</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Poziția ferestrei</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ru.resx

@ -124,7 +124,7 @@
<value>Скрывать Автоматически</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Скрыть</value>
<value>Скрыть все</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Положение Окна</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.sv.resx

@ -124,7 +124,7 @@
<value>Dölj automatiskt</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>Dölj</value>
<value>Göm alla</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>Fönsterposition</value>

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx

@ -124,7 +124,7 @@
<value>自动隐藏</value>
</data>
<data name="Anchorable_BtnClose_Hint" xml:space="preserve">
<value>隐藏</value>
<value>全部藏起来</value>
</data>
<data name="Anchorable_CxMenu_Hint" xml:space="preserve">
<value>窗口位置</value>

1438
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Default.xaml

File diff suppressed because it is too large

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinAutoHide_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinClose_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinDocMenu_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinMaximize_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinMenu_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinRestore_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

1422
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/generic.xaml

File diff suppressed because it is too large

31
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj

@ -165,6 +165,7 @@
<Compile Include="Layout\ILayoutElement.cs" />
<Compile Include="Layout\ILayoutElementWithVisibility.cs" />
<Compile Include="Layout\ILayoutGroup.cs" />
<Compile Include="Layout\ILayoutInitialContainer.cs" />
<Compile Include="Layout\ILayoutOrientableElement.cs" />
<Compile Include="Layout\ILayoutPane.cs" />
<Compile Include="Layout\ILayoutPanelElement.cs" />
@ -204,6 +205,11 @@
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.ja-JP.Designer.cs">
<DependentUpon>Resources.ja-JP.resx</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Properties\Resources.cs-CZ.Designer.cs">
<DependentUpon>Resources.cs-CZ.resx</DependentUpon>
<AutoGen>True</AutoGen>
@ -272,6 +278,11 @@
</Compile>
<Compile Include="Win32Helper.cs" />
<Compile Include="WindowHelper.cs" />
<EmbeddedResource Include="Properties\Resources.ja-JP.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.ja-JP.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.cs-CZ.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.cs-CZ.Designer.cs</LastGenOutput>
@ -364,6 +375,10 @@
<Resource Include="Themes\Generic\Images\PinRestore.png" />
</ItemGroup>
<ItemGroup>
<Page Include="Themes\Default.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Themes\generic.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@ -375,6 +390,22 @@
<Name>Xceed.Wpf.Toolkit</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Resource Include="Themes\Generic\Images\PinAutoHide_White.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Themes\Generic\Images\PinClose_White.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Themes\Generic\Images\PinDocMenu_White.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Themes\Generic\Images\PinMenu_White.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Themes\Generic\Images\PinMaximize_White.png" />
<Resource Include="Themes\Generic\Images\PinRestore_White.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.

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MultiLineTextEditorView.xaml.txt

@ -33,7 +33,7 @@
<xctk:MultiLineTextEditor
TextWrapping="Wrap"
Text="{Binding Path=Review}"
Content="{Binding Text, RelativeSource={RelativeSource Self}}"
Content="{Binding Path=Review}"
HorizontalContentAlignment="Left"
VerticalContentAlignment="Center"
Height="24" />

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/SwitchPanelView.xaml.txt

@ -186,7 +186,7 @@
</StackPanel>
<GroupBox Header="WrapPanel Toolbox"
Background="White"
Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
Grid.Row="3"
Visibility="{Binding SelectedIndex, ElementName=layoutCombo, Converter={StaticResource comboBoxToVisibilityConverter}, ConverterParameter=0}"
Margin="10" >
@ -251,7 +251,7 @@
</GroupBox>
<GroupBox Header="RandomPanel Toolbox"
Background="White"
Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
Grid.Row="3"
Visibility="{Binding SelectedIndex, ElementName=layoutCombo, Converter={StaticResource comboBoxToVisibilityConverter}, ConverterParameter=1}"
Margin="10" >

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ThemingAvalonDockView.xaml.txt

@ -27,7 +27,7 @@
<local:DemoView.Description>
<Paragraph FontSize="14"
FontFamily="Segoe">
<Run>Changes the themes of the AvalonDock controls. Available themes are System, Aero, VS2010, Metro, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.AvalonDock.Themes.xxx.dll assemblies are necessary to use these themes.</Run>
<Run>Changes the themes of the AvalonDock controls. Available themes are System, HighContrast, Aero, VS2010, Metro, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.AvalonDock.Themes.xxx.dll assemblies are necessary to use these themes.</Run>
<LineBreak />
<Run>Some features of this sample are only available in the "Plus" version.</Run>
<LineBreak />

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ThemingDataGridView.xaml.txt

@ -27,7 +27,7 @@
x:Name="_demo">
<local:DemoView.Description>
<Paragraph FontSize="14" FontFamily="Segoe">
<Run>Changes the themes of the datagrid control. Available themes are System, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.DataGrid.Themes.Office2007.dll or Xceed.Wpf.DataGrid.Themes.Metro.dll assemblies are necessary to use these themes.</Run>
<Run>Changes the themes of the datagrid control. Available themes are System, HighContrast, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.DataGrid.Themes.Office2007.dll or Xceed.Wpf.DataGrid.Themes.Metro.dll assemblies are necessary to use these themes.</Run>
<LineBreak />
<Run>This feature is only available in the "Plus" version.</Run>
<LineBreak />

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ThemingExtendedToolkitView.xaml.txt

@ -25,7 +25,7 @@
x:Name="_demo">
<local:DemoView.Description>
<Paragraph FontSize="14" FontFamily="Segoe">
<Run>Changes the themes of the Toolkit for WPF controls. Available themes are System, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.Toolkit.Themes.Office2007.dll, Xceed.Wpf.Toolkit.Themes.Windows10.dll or Xceed.Wpf.Toolkit.Themes.Metro.dll assemblies are necessary to use the themes.</Run>
<Run>Changes the themes of the Toolkit for WPF controls. Available themes are System, HighContrast, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.Toolkit.Themes.Office2007.dll, Xceed.Wpf.Toolkit.Themes.Windows10.dll or Xceed.Wpf.Toolkit.Themes.Metro.dll assemblies are necessary to use the themes.</Run>
<LineBreak />
<Run>This feature is only available in the "Plus" version.</Run>
<LineBreak />

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ThemingListBoxView.xaml.txt

@ -30,7 +30,7 @@
<Run>Dress Up Your App in Style in Minutes</Run>
<LineBreak />
<LineBreak />
<Run>Supports implicit styles, so the entire listbox can be styled in minutes with a couple of lines of code. Also supports explicit styles and Expression Blend. Available themes are System, Office2007, LiveExplorer, MediaPlayer, Windows10 and Metro with accent color. The Xceed.Wpf.ListBox.Themes.xxx.dll assembly is necessary to use the themes.</Run>
<Run>Supports implicit styles, so the entire listbox can be styled in minutes with a couple of lines of code. Also supports explicit styles and Expression Blend. Available themes are System, HighContrast, Office2007, LiveExplorer, MediaPlayer, Windows10 and Metro with accent color. The Xceed.Wpf.ListBox.Themes.xxx.dll assembly is necessary to use the themes.</Run>
<LineBreak />
<Run>This feature is only available in the "Plus" version.</Run>
<LineBreak />

3
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/WindowContainerView.xaml.txt

@ -66,7 +66,8 @@
</Grid>
</GroupBox>
<Grid Grid.Row="1" Margin="10">
<Grid Grid.Row="1" Margin="10"
TextElement.Foreground="{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />

8
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/ZoomboxView.xaml.txt

@ -39,7 +39,7 @@
<TabControl Margin="20,20,0,20"
Width="360"
Grid.Column="0"
Background="White"
Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
DataContext="{Binding ElementName=zoombox}">
<TabControl.Resources>
<xctk:RoundedValueConverter x:Key="Round"
@ -86,19 +86,19 @@
IsOpen="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsMouseOver, Mode=OneWay}">
<Border Name="Border"
Background="#FFC72035"
BorderBrush="White"
BorderBrush="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"
Margin="0"
BorderThickness="1"
CornerRadius="10">
<TextBlock Margin="7"
MaxWidth="500"
TextWrapping="Wrap"
Foreground="White"
Foreground="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag.InnerText}" />
</Border>
</Popup>
<Rectangle Grid.ColumnSpan="3"
Fill="White"
Fill="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
Stroke="{x:Null}"
StrokeThickness="0"
RadiusX="0"

35
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/MainWindow.xaml

@ -229,9 +229,8 @@
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}">
Transparent
</SolidColorBrush>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}">
Black
</SolidColorBrush>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
Color="{DynamicResource {x:Static SystemColors.ActiveCaptionTextColorKey}}" />
</Style.Resources>
<Setter Property="FontSize"
@ -241,7 +240,7 @@
<Setter Property="FontWeight"
Value="Light" />
<Setter Property="Foreground"
Value="Black" />
Value="{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}" />
<Setter Property="Focusable"
Value="False" />
<Setter Property="IsExpanded"
@ -271,9 +270,9 @@
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}">
Transparent
</SolidColorBrush>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}">
Black
</SolidColorBrush>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
Color="{DynamicResource {x:Static SystemColors.ActiveCaptionTextColorKey}}"/>
</Style.Resources>
<Setter Property="FontSize"
@ -283,7 +282,7 @@
<Setter Property="FontWeight"
Value="Light" />
<Setter Property="Foreground"
Value="Black" />
Value="{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}" />
<Setter Property="Template"
Value="{StaticResource TreeViewItemTemplate}" />
<Setter Property="HeaderTemplate">
@ -314,7 +313,7 @@
<Setter Property="FontWeight"
Value="Light" />
<Setter Property="Foreground"
Value="Black" />
Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
<Setter Property="Template"
Value="{StaticResource TreeViewItemTemplate}" />
<Setter Property="HeaderTemplate">
@ -332,7 +331,7 @@
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background"
Value="#e8e8e8"
Value="#b0b0b0"
TargetName="_treeViewItemBorder" />
</Trigger>
</DataTemplate.Triggers>
@ -373,7 +372,7 @@
FontFamily="Segoe UI"
FontWeight="Light"
TextAlignment="right"
Foreground="Black"
Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
TextTrimming="CharacterEllipsis"
Text="{Binding View.Title, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
<TabPanel Grid.Column="1"
@ -407,7 +406,7 @@
FontFamily="Segoe UI"
FontSize="14"
FontWeight="SemiBold"
Foreground="Black"
Foreground="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"
Text="{TemplateBinding Header}"
TextWrapping="Wrap" />
</Grid>
@ -419,7 +418,7 @@
Value="{StaticResource SampleDefaultBrush}" />
<Setter Property="Foreground"
TargetName="textBlock"
Value="White" />
Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
@ -736,7 +735,7 @@
Grid.Column="1"
HorizontalAlignment="Right"
Margin="0,0,17,0"
Foreground="Gray" />
Foreground="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" />
<Grid Grid.Column="1"
Grid.Row="1">
@ -776,7 +775,7 @@
<Border Grid.Column="1"
Width="225"
BorderThickness="1"
BorderBrush="Gray"
BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}"
Margin="0,0,12,0">
<Grid>
<Grid.RowDefinitions>
@ -789,7 +788,7 @@
<!-- Sample title -->
<TextBlock TextWrapping="Wrap"
Foreground="#FF606060"
Foreground="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}"
FontSize="16"
FontWeight="Bold"
FontFamily="Segoe UI"
@ -821,7 +820,7 @@
<!-- Bottom Rectangle text -->
<TextBlock Grid.Row="2"
Foreground="White"
Foreground="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"
FontFamily="Verdana"
FontSize="12"
Margin="5,5,5,0"
@ -831,7 +830,7 @@
<TextBlock Grid.Row="3"
Margin="20,5,5,0">
<Hyperlink FontWeight="Black"
Foreground="White"
Foreground="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"
FontFamily="Verdana"
FontSize="12"
Focusable="False"

8
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Resources/TextBlockStyles.xaml

@ -29,7 +29,8 @@
<Style x:Key="DisableGrayText" TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Gray" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
</Style.Triggers>
</Style>
@ -45,4 +46,9 @@
</Style.Triggers>
</Style>
<Style TargetType="GroupBox">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}" />
</Style>
</ResourceDictionary>

3
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/BusyIndicator/Resources/Common.xaml

@ -19,7 +19,8 @@
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit">
<DataTemplate x:Key="SampleContent">
<Grid Margin="10">
<Grid Margin="10"
TextElement.Foreground="{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Panels/Views/SwitchPanelView.xaml

@ -186,7 +186,7 @@
</StackPanel>
<GroupBox Header="WrapPanel Toolbox"
Background="White"
Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
Grid.Row="3"
Visibility="{Binding SelectedIndex, ElementName=layoutCombo, Converter={StaticResource comboBoxToVisibilityConverter}, ConverterParameter=0}"
Margin="10" >
@ -251,7 +251,7 @@
</GroupBox>
<GroupBox Header="RandomPanel Toolbox"
Background="White"
Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
Grid.Row="3"
Visibility="{Binding SelectedIndex, ElementName=layoutCombo, Converter={StaticResource comboBoxToVisibilityConverter}, ConverterParameter=1}"
Margin="10" >

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/MultiLineTextEditorView.xaml

@ -33,7 +33,7 @@
<xctk:MultiLineTextEditor
TextWrapping="Wrap"
Text="{Binding Path=Review}"
Content="{Binding Text, RelativeSource={RelativeSource Self}}"
Content="{Binding Path=Review}"
HorizontalContentAlignment="Left"
VerticalContentAlignment="Center"
Height="24" />

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingAvalonDockView.xaml

@ -27,7 +27,7 @@
<local:DemoView.Description>
<Paragraph FontSize="14"
FontFamily="Segoe">
<Run>Changes the themes of the AvalonDock controls. Available themes are System, Aero, VS2010, Metro, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.AvalonDock.Themes.xxx.dll assemblies are necessary to use these themes.</Run>
<Run>Changes the themes of the AvalonDock controls. Available themes are System, HighContrast, Aero, VS2010, Metro, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.AvalonDock.Themes.xxx.dll assemblies are necessary to use these themes.</Run>
<LineBreak />
<Run>Some features of this sample are only available in the "Plus" version.</Run>
<LineBreak />

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingDataGridView.xaml

@ -27,7 +27,7 @@
x:Name="_demo">
<local:DemoView.Description>
<Paragraph FontSize="14" FontFamily="Segoe">
<Run>Changes the themes of the datagrid control. Available themes are System, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.DataGrid.Themes.Office2007.dll or Xceed.Wpf.DataGrid.Themes.Metro.dll assemblies are necessary to use these themes.</Run>
<Run>Changes the themes of the datagrid control. Available themes are System, HighContrast, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.DataGrid.Themes.Office2007.dll or Xceed.Wpf.DataGrid.Themes.Metro.dll assemblies are necessary to use these themes.</Run>
<LineBreak />
<Run>This feature is only available in the "Plus" version.</Run>
<LineBreak />

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingExtendedToolkitView.xaml

@ -25,7 +25,7 @@
x:Name="_demo">
<local:DemoView.Description>
<Paragraph FontSize="14" FontFamily="Segoe">
<Run>Changes the themes of the Toolkit for WPF controls. Available themes are System, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.Toolkit.Themes.Office2007.dll, Xceed.Wpf.Toolkit.Themes.Windows10.dll or Xceed.Wpf.Toolkit.Themes.Metro.dll assemblies are necessary to use the themes.</Run>
<Run>Changes the themes of the Toolkit for WPF controls. Available themes are System, HighContrast, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.Toolkit.Themes.Office2007.dll, Xceed.Wpf.Toolkit.Themes.Windows10.dll or Xceed.Wpf.Toolkit.Themes.Metro.dll assemblies are necessary to use the themes.</Run>
<LineBreak />
<Run>This feature is only available in the "Plus" version.</Run>
<LineBreak />

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingListBoxView.xaml

@ -30,7 +30,7 @@
<Run>Dress Up Your App in Style in Minutes</Run>
<LineBreak />
<LineBreak />
<Run>Supports implicit styles, so the entire listbox can be styled in minutes with a couple of lines of code. Also supports explicit styles and Expression Blend. Available themes are System, Office2007, LiveExplorer, MediaPlayer, Windows10 and Metro with accent color. The Xceed.Wpf.ListBox.Themes.xxx.dll assembly is necessary to use the themes.</Run>
<Run>Supports implicit styles, so the entire listbox can be styled in minutes with a couple of lines of code. Also supports explicit styles and Expression Blend. Available themes are System, HighContrast, Office2007, LiveExplorer, MediaPlayer, Windows10 and Metro with accent color. The Xceed.Wpf.ListBox.Themes.xxx.dll assembly is necessary to use the themes.</Run>
<LineBreak />
<Run>This feature is only available in the "Plus" version.</Run>
<LineBreak />

3
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Window/Views/WindowContainerView.xaml

@ -66,7 +66,8 @@
</Grid>
</GroupBox>
<Grid Grid.Row="1" Margin="10">
<Grid Grid.Row="1" Margin="10"
TextElement.Foreground="{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />

8
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Zoombox/Views/ZoomboxView.xaml

@ -39,7 +39,7 @@
<TabControl Margin="20,20,0,20"
Width="360"
Grid.Column="0"
Background="White"
Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
DataContext="{Binding ElementName=zoombox}">
<TabControl.Resources>
<xctk:RoundedValueConverter x:Key="Round"
@ -86,19 +86,19 @@
IsOpen="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsMouseOver, Mode=OneWay}">
<Border Name="Border"
Background="#FFC72035"
BorderBrush="White"
BorderBrush="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"
Margin="0"
BorderThickness="1"
CornerRadius="10">
<TextBlock Margin="7"
MaxWidth="500"
TextWrapping="Wrap"
Foreground="White"
Foreground="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag.InnerText}" />
</Border>
</Popup>
<Rectangle Grid.ColumnSpan="3"
Fill="White"
Fill="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
Stroke="{x:Null}"
StrokeThickness="0"
RadiusX="0"

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Images/Delete16_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Images/Duplicate_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

20
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Implementation/CollectionControlDialog.xaml.cs

@ -287,6 +287,9 @@ namespace Xceed.Wpf.Toolkit
private void GenerateValue( PropertyInfo propertyInfo, object propertyInfoValue, object result, bool isIndexed = false )
{
if( this.IsCyclingDependency( propertyInfoValue ) )
return;
// Look for nested object
if( propertyInfo.PropertyType.IsClass
&& ( propertyInfo.PropertyType != typeof( Transform ) )
@ -341,6 +344,23 @@ namespace Xceed.Wpf.Toolkit
}
}
private bool IsCyclingDependency( object propertyInfoValue )
{
if( propertyInfoValue == null )
return false;
if( object.ReferenceEquals( propertyInfoValue, this.ItemsSource ) )
return true;
foreach( var item in this.ItemsSource )
{
if( object.ReferenceEquals( propertyInfoValue, item ) )
return true;
}
return false;
}
private object GenerateEditableKeyValuePair( object source )
{
var sourceType = source.GetType();

7
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Core/VersionResourceDictionary.cs

@ -16,6 +16,7 @@
***********************************************************************************/
using System;
using System.Windows;
namespace Xceed.Wpf.Toolkit.Core
{
@ -24,14 +25,16 @@ namespace Xceed.Wpf.Toolkit.Core
public VersionResourceDictionary() { }
public VersionResourceDictionary( string assemblyName, string sourcePath )
:base( assemblyName, sourcePath )
:base( assemblyName, sourcePath )
{
}
protected override Uri BuildUri()
{
string uriStr = PackUriExtension.BuildAbsolutePackUriString( this.AssemblyName, _XceedVersionInfo.Version, this.SourcePath );
var source = this.SourcePath;
string uriStr = PackUriExtension.BuildAbsolutePackUriString( this.AssemblyName, _XceedVersionInfo.Version, source );
return new Uri( uriStr, UriKind.Absolute );
}
}

5
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DateTimePicker/Implementation/DateTimePicker.cs

@ -43,6 +43,7 @@ namespace Xceed.Wpf.Toolkit
private TimePicker _timePicker;
private DateTime? _calendarTemporaryDateTime;
private DateTime? _calendarIntendedDateTime;
private bool _isModifyingCalendarInternally;
#endregion //Members
@ -299,8 +300,10 @@ namespace Xceed.Wpf.Toolkit
if( _calendar != null && _calendar.SelectedDate != newValueDate)
{
_isModifyingCalendarInternally = true;
_calendar.SelectedDate = newValueDate;
_calendar.DisplayDate = newValue.GetValueOrDefault( this.ContextNow );
_isModifyingCalendarInternally = false;
}
//If we change any part of the datetime without
@ -450,7 +453,7 @@ namespace Xceed.Wpf.Toolkit
//}
//else
//{
if( !object.Equals( newDate, Value ) )
if( !_isModifyingCalendarInternally && !object.Equals( newDate, Value ) )
{
this.Value = newDate;
}

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs

@ -376,7 +376,7 @@ namespace Xceed.Wpf.Toolkit
private void OnMouseDownOutsideCapturedElement( object sender, MouseButtonEventArgs e )
{
if( !this.IsMouseCaptureWithin )
if( (_popup != null) && !_popup.IsMouseDirectlyOver )
{
this.CloseDropDown( true );
}

5
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Magnifier/Themes/Generic.xaml

@ -64,6 +64,11 @@
<Trigger Property="FrameType" Value="Rectangle">
<Setter Property="Template" Value="{StaticResource RectangleTemplate}" />
</Trigger>
<Trigger Property="IsEnabled"
Value="False">
<Setter Property="Template"
Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Images/Notes16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 B

14
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Themes/Aero2.NormalColor.xaml

@ -30,11 +30,10 @@
<conv:InverseBoolConverter x:Key="InverseBoolConverter" />
<Image x:Key="DefaultContent"
x:Shared="False"
Height="16"
Width="18"
Source="./../Images/Notes16.png" />
<TextBlock x:Key="DefaultContent"
Text="{Binding Text, RelativeSource={RelativeSource AncestorType={x:Type local:MultiLineTextEditor}}}"
TextWrapping="Wrap"
TextTrimming="CharacterEllipsis" />
<Style x:Key="ToggleButtonStyle"
TargetType="ToggleButton">
@ -212,6 +211,11 @@
<Setter Property="BorderBrush"
Value="{DynamicResource {x:Static themes:ResourceKeys.ControlSelectedBorderKey}}" />
</Trigger>
<Trigger Property="IsEnabled"
Value="False">
<Setter Property="TextElement.Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</Style.Triggers>
</Style>

9
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Themes/Generic.xaml

@ -28,11 +28,10 @@
<conv:InverseBoolConverter x:Key="InverseBoolConverter" />
<Image x:Key="DefaultContent"
x:Shared="False"
Height="16"
Width="18"
Source="./../Images/Notes16.png" />
<TextBlock x:Key="DefaultContent"
Text="{Binding Text, RelativeSource={RelativeSource AncestorType={x:Type local:MultiLineTextEditor}}}"
TextWrapping="Wrap"
TextTrimming="CharacterEllipsis" />
<LinearGradientBrush x:Key="PopupDarkBorderBrush"
EndPoint="0.5,1"

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/DateTimeUpDownBase.cs

@ -147,7 +147,7 @@ namespace Xceed.Wpf.Toolkit.Primitives
return;
}
case Key.Add:
if( this.AllowSpin && !this.IsReadOnly )
if( this.AllowSpin && !this.AllowTextInput && !this.IsReadOnly )
{
this.DoIncrement();
e.Handled = true;
@ -155,7 +155,7 @@ namespace Xceed.Wpf.Toolkit.Primitives
_fireSelectionChangedEvent = false;
break;
case Key.Subtract:
if( this.AllowSpin && !this.IsReadOnly )
if( this.AllowSpin && !this.AllowTextInput && !this.IsReadOnly )
{
this.DoDecrement();
e.Handled = true;

30
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs

@ -479,11 +479,33 @@ namespace Xceed.Wpf.Toolkit.Primitives
|| propertyPath == "." )
return item;
if( propertyPath.Contains( "." ) )
{
object objectValue = item;
var parts = propertyPath.Split( new char[] { '.' } );
PropertyInfo prop = item.GetType().GetProperty( propertyPath );
return ( prop != null )
? prop.GetValue( item, null )
: null;
foreach( var part in parts )
{
var prop = objectValue.GetType().GetProperty( part );
if( prop != null )
{
objectValue = prop.GetValue( objectValue, null );
}
else
{
return null;
}
}
return objectValue;
}
else
{
var prop = item.GetType().GetProperty( propertyPath );
return ( prop != null )
? prop.GetValue( item, null )
: null;
}
}
protected object GetItemValue( object item )

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/ClearFilter16_Green.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/ClearFilter16_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/SortAscending16_White.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

9
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs

@ -30,6 +30,7 @@ using Xceed.Wpf.Toolkit.Core.Utilities;
using System.Linq.Expressions;
using System.Diagnostics;
using System.Globalization;
using System.Windows.Threading;
namespace Xceed.Wpf.Toolkit.PropertyGrid
{
@ -229,8 +230,12 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid
DescriptorPropertyDefinitionBase descriptor = be.DataItem as DescriptorPropertyDefinitionBase;
if( Validation.GetHasError( descriptor ) )
{
ReadOnlyObservableCollection<ValidationError> errors = Validation.GetErrors( descriptor );
Validation.MarkInvalid( be, errors[ 0 ] );
this.Dispatcher.BeginInvoke( DispatcherPriority.Input, new Action( () =>
{
var errors = Validation.GetErrors( descriptor );
Validation.MarkInvalid( be, errors[ 0 ] );
}
) );
}
}
}

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bold_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bullets_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/CenterAlign_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/FontColorPicker_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Italic_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/LeftAlign_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Numbering_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/RightAlign_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/TextHighlightColorPicker_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Underline_White16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs

@ -174,7 +174,9 @@ namespace Xceed.Wpf.Toolkit
void ShowAdorner()
{
if( _adorner.Visibility == Visibility.Visible )
return;
{
HideAdorner();
}
VerifyAdornerLayer();

21
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Generic.xaml

@ -21,7 +21,15 @@
<ResourceDictionary.MergedDictionaries>
<!-- core:VersionResourceDictionary will take care of modifying the value of 'AssemblyName' to match
the real name of the assembly when compiled for other platforms, like .NET Core for example. -->
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Themes/Generic/Brushes.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Themes/Generic/Brushes.xaml"/>
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Themes/Generic/Buttons.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Themes/Generic/Common.xaml" />
@ -32,11 +40,11 @@
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="ButtonSpinner/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Calculator/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="CalculatorUpDown/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="CalculatorUpDown/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Primitives/Themes/Generic/WindowControl.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Primitives/Themes/Generic/SelectorItem.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="CheckComboBox/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="CheckListBox/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="CheckComboBox/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="CheckListBox/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="ChildWindow/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="CollectionControl/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="ColorCanvas/Themes/Generic.xaml" />
@ -57,9 +65,10 @@
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="TimePicker/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="TimeSpanUpDown/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="WatermarkComboBox/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="WatermarkTextBox/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="WatermarkComboBox/Themes/Generic.xaml"/>
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="WatermarkTextBox/Themes/Generic.xaml"/>
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Wizard/Themes/Generic.xaml" />
<core:VersionResourceDictionary AssemblyName="Xceed.Wpf.Toolkit" SourcePath="Zoombox/Themes/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

30
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs

@ -22,11 +22,18 @@ using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using Xceed.Wpf.Toolkit.Core;
using System.ComponentModel;
namespace Xceed.Wpf.Toolkit
{
public class Wizard : ItemsControl
{
#region Private Members
private bool? _dialogResult = null;
#endregion
#region Properties
public static readonly DependencyProperty BackButtonContentProperty = DependencyProperty.Register( "BackButtonContent", typeof( object ), typeof( Wizard ), new UIPropertyMetadata( "< Back" ) );
@ -639,12 +646,33 @@ namespace Xceed.Wpf.Toolkit
{
//we can only set the DialogResult if the window was opened as modal with the ShowDialog() method. Otherwise an exception would occur
if( ComponentDispatcher.IsThreadModal )
window.DialogResult = dialogResult;
{
_dialogResult = dialogResult;
window.Closing += this.Window_Closing;
}
window.Close();
}
}
private void Window_Closing( object sender, CancelEventArgs e )
{
var window = sender as Window;
if( window != null )
{
if( !e.Cancel )
{
// Set dialog result only when closing is not canceled.
window.DialogResult = _dialogResult;
}
_dialogResult = null;
window.Closing -= this.Window_Closing;
}
}
private bool NextPageExists()
{
bool exists = false;

48
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj

@ -739,9 +739,6 @@
<ItemGroup>
<Resource Include="PropertyGrid\Images\ClearFilter16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="MultiLineTextEditor\Images\Notes16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Zoombox\Resources\Zoom.cur" />
<Resource Include="Zoombox\Resources\ZoomRelative.cur" />
@ -948,6 +945,51 @@
<ItemGroup>
<EmbeddedResource Include="Zoombox\Zoombox.Icon.bmp" />
</ItemGroup>
<ItemGroup>
<Resource Include="PropertyGrid\Images\SortAscending16_White.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\Bullets_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\Numbering_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\Bold_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\Italic_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\Underline_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\LeftAlign_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\CenterAlign_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\RightAlign_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\TextHighlightColorPicker_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="RichTextBoxFormatBar\Images\FontColorPicker_White16.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="CollectionControl\Images\Duplicate_White.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="CollectionControl\Images\Delete16_White.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="PropertyGrid\Images\ClearFilter16_White.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="PropertyGrid\Images\ClearFilter16_Green.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.

2
ExtendedWPFToolkitSolution/Xceed.Wpf.Toolkit.sln

@ -64,6 +64,6 @@ Global
{BA72CCE0-A9FB-4995-B496-7FEC5C87B85B} = {8976E4A6-FF5F-44C5-AC57-FEDA249DD199}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3A25421B-477A-4212-9A1F-F20CB611EF43}
SolutionGuid = {F6B58C75-8547-402F-A83D-43DA9FA7E434}
EndGlobalSection
EndGlobal

Loading…
Cancel
Save