From a9332abb2d6388f338098c25c644b0203271d7ee Mon Sep 17 00:00:00 2001 From: BoucherS_cp Date: Wed, 6 Apr 2016 20:15:10 +0000 Subject: [PATCH] --- .../AssemblyVersionInfo.cs | 2 +- .../Theme.xaml | 9 +- .../AssemblyVersionInfo.cs | 2 +- .../Theme.xaml | 9 +- .../AssemblyVersionInfo.cs | 2 +- .../Theme.xaml | 9 +- .../AssemblyVersionInfo.cs | 2 +- .../Controls/DocumentPaneDropTarget.cs | 39 +- .../Controls/LayoutAnchorableControl.cs | 34 +- .../Controls/LayoutAnchorableTabItem.cs | 10 +- .../Controls/LayoutDocumentControl.cs | 35 +- .../Controls/LayoutDocumentTabItem.cs | 10 +- .../Controls/LayoutFloatingWindowControl.cs | 4 +- .../Controls/Shell/Standard/NativeMethods.cs | 2 +- .../Controls/Shell/Standard/Utilities.cs | 9 + .../Layout/LayoutAnchorablePane.cs | 15 +- .../Layout/LayoutContent.cs | 21 + .../Layout/LayoutDocumentPane.cs | 31 +- .../Layout/LayoutPositionableGroup.cs | 28 +- .../Xceed.Wpf.AvalonDock/Themes/generic.xaml | 50 +- .../Xceed.Wpf.DataGrid/AssemblyVersionInfo.cs | 2 +- .../CodeFiles/CheckListsView.xaml.txt | 23 +- .../DropDownSplitButtonView.xaml.txt | 117 ++- .../CodeFiles/MaterialButtonView.xaml.cs.txt | 35 + .../CodeFiles/MaterialButtonView.xaml.txt | 49 ++ .../MaterialCheckBoxView.xaml.cs.txt | 34 + .../CodeFiles/MaterialCheckBoxView.xaml.txt | 46 ++ .../MaterialComboBoxView.xaml.cs.txt | 34 + .../CodeFiles/MaterialComboBoxView.xaml.txt | 48 ++ .../MaterialControlsView.xaml.cs.txt | 59 ++ .../CodeFiles/MaterialControlsView.xaml.txt | 56 ++ .../CodeFiles/MaterialDemoView.cs.txt | 41 + .../MaterialDropDownView.xaml.cs.txt | 34 + .../CodeFiles/MaterialDropDownView.xaml.txt | 49 ++ .../CodeFiles/MaterialFrameView.xaml.cs.txt | 34 + .../CodeFiles/MaterialFrameView.xaml.txt | 48 ++ .../CodeFiles/MaterialListBoxView.xaml.cs.txt | 34 + .../CodeFiles/MaterialListBoxView.xaml.txt | 50 ++ ...aterialProgressBarCircularView.xaml.cs.txt | 50 ++ .../MaterialProgressBarCircularView.xaml.txt | 60 ++ .../MaterialProgressBarView.xaml.cs.txt | 50 ++ .../MaterialProgressBarView.xaml.txt | 57 ++ .../MaterialRadioButtonView.xaml.cs.txt | 34 + .../MaterialRadioButtonView.xaml.txt | 46 ++ .../CodeFiles/MaterialSliderView.xaml.cs.txt | 37 + .../CodeFiles/MaterialSliderView.xaml.txt | 63 ++ .../CodeFiles/MaterialSwitchView.xaml.cs.txt | 34 + .../CodeFiles/MaterialSwitchView.xaml.txt | 48 ++ .../CodeFiles/MaterialTabsView.xaml.cs.txt | 34 + .../CodeFiles/MaterialTabsView.xaml.txt | 57 ++ .../MaterialTextFieldView.xaml.cs.txt | 34 + .../CodeFiles/MaterialTextFieldView.xaml.txt | 56 ++ .../CodeFiles/MaterialToastView.xaml.cs.txt | 38 + .../CodeFiles/MaterialToastView.xaml.txt | 55 ++ .../CodeFiles/MaterialToolTipView.xaml.cs.txt | 34 + .../CodeFiles/MaterialToolTipView.xaml.txt | 52 ++ .../PropertyGridAttributesView.xaml.cs.txt | 26 +- .../CodeFiles/PropertyGridView.xaml.txt | 14 +- .../CodeFiles/ToggleSwitchView.xaml.txt | 4 + .../CodeFiles/WatermarkTextboxView.xaml.txt | 113 ++- .../MainWindow.xaml | 45 +- .../Properties/AssemblyInfo.cs | 4 +- .../Properties/Resources.resx | 10 +- .../Resources/TextBlockStyles.xaml | 11 + .../Button/Views/DropDownSplitButtonView.xaml | 117 ++- .../CheckLists/Views/CheckListsView.xaml | 23 +- .../Converters/EqualsMinusOneConverter.cs | 29 + .../MaterialControls/Data/RequiredRule.cs | 27 + .../OpenSourceImages/MaterialButton.png | Bin 0 -> 4551 bytes .../OpenSourceImages/MaterialCheckBox.png | Bin 0 -> 2388 bytes .../OpenSourceImages/MaterialComboBox.png | Bin 0 -> 4231 bytes .../OpenSourceImages/MaterialControls.png | Bin 0 -> 48541 bytes .../OpenSourceImages/MaterialDropDown.png | Bin 0 -> 41843 bytes .../OpenSourceImages/MaterialFrame.png | Bin 0 -> 10645 bytes .../OpenSourceImages/MaterialListBox.png | Bin 0 -> 3574 bytes .../OpenSourceImages/MaterialProgressBar.png | Bin 0 -> 2649 bytes .../MaterialProgressBarCircular.png | Bin 0 -> 7656 bytes .../OpenSourceImages/MaterialRadioButton.png | Bin 0 -> 2701 bytes .../OpenSourceImages/MaterialSlider.png | Bin 0 -> 2521 bytes .../OpenSourceImages/MaterialSwitch.png | Bin 0 -> 3272 bytes .../OpenSourceImages/MaterialTabs.png | Bin 0 -> 6648 bytes .../OpenSourceImages/MaterialTextField.png | Bin 0 -> 1908 bytes .../OpenSourceImages/MaterialToast.png | Bin 0 -> 2476 bytes .../OpenSourceImages/MaterialToolTip.png | Bin 0 -> 6040 bytes .../Resources/CommonResources.xaml | 25 + .../Resources/PencilTool16.png | Bin 0 -> 348 bytes .../MaterialControls/Resources/WhitePen.png | Bin 0 -> 16442 bytes .../MaterialControls/Resources/building16.png | Bin 0 -> 18218 bytes .../MaterialControls/Resources/italy.4.gif | Bin 0 -> 15547 bytes .../Views/MaterialButtonView.xaml | 49 ++ .../Views/MaterialButtonView.xaml.cs | 35 + .../Views/MaterialCheckBoxView.xaml | 46 ++ .../Views/MaterialCheckBoxView.xaml.cs | 34 + .../Views/MaterialComboBoxView.xaml | 48 ++ .../Views/MaterialComboBoxView.xaml.cs | 34 + .../Views/MaterialControlsView.xaml | 56 ++ .../Views/MaterialControlsView.xaml.cs | 59 ++ .../Views/MaterialDemoView.cs | 41 + .../Views/MaterialDropDownView.xaml | 49 ++ .../Views/MaterialDropDownView.xaml.cs | 34 + .../Views/MaterialFrameView.xaml | 48 ++ .../Views/MaterialFrameView.xaml.cs | 34 + .../Views/MaterialListBoxView.xaml | 50 ++ .../Views/MaterialListBoxView.xaml.cs | 34 + .../MaterialProgressBarCircularView.xaml | 60 ++ .../MaterialProgressBarCircularView.xaml.cs | 50 ++ .../Views/MaterialProgressBarView.xaml | 57 ++ .../Views/MaterialProgressBarView.xaml.cs | 50 ++ .../Views/MaterialRadioButtonView.xaml | 46 ++ .../Views/MaterialRadioButtonView.xaml.cs | 34 + .../Views/MaterialSliderView.xaml | 63 ++ .../Views/MaterialSliderView.xaml.cs | 37 + .../Views/MaterialSwitchView.xaml | 48 ++ .../Views/MaterialSwitchView.xaml.cs | 34 + .../Views/MaterialTabsView.xaml | 57 ++ .../Views/MaterialTabsView.xaml.cs | 34 + .../Views/MaterialTextFieldView.xaml | 56 ++ .../Views/MaterialTextFieldView.xaml.cs | 34 + .../Views/MaterialToastView.xaml | 55 ++ .../Views/MaterialToastView.xaml.cs | 38 + .../Views/MaterialToolTipView.xaml | 52 ++ .../Views/MaterialToolTipView.xaml.cs | 34 + .../Views/PropertyGridAttributesView.xaml.cs | 26 +- .../PropertyGrid/Views/PropertyGridView.xaml | 14 +- .../Text/Views/WatermarkTextboxView.xaml | 113 ++- .../Converters/ZeroToBoolConverter.cs | 36 + .../ToggleSwitch/Resources/PencilTool16.png | Bin 0 -> 348 bytes .../ToggleSwitch/Views/ToggleSwitchView.xaml | 4 + .../Xceed.Wpf.Toolkit.LiveExplorer.csproj | 211 +++++ .../Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs | 2 +- .../Calculator/Implementation/Calculator.cs | 23 +- .../Calculator/Themes/Aero2.NormalColor.xaml | 4 +- .../Calculator/Themes/Generic.xaml | 2 +- .../Implementation/CheckComboBox.cs | 56 +- .../Themes/Aero2.NormalColor.xaml | 256 ++++-- .../CheckComboBox/Themes/Generic.xaml | 155 +++- .../ColorCanvas/Implementation/ColorCanvas.cs | 7 +- .../ColorPicker/Themes/Aero2.NormalColor.xaml | 20 +- .../ColorPicker/Themes/Generic.xaml | 20 +- .../Core/Converters/HalfConverter.cs | 2 +- .../Implementation/DateTimeUpDown.cs | 20 +- .../Implementation/DropDownButton.cs | 39 + .../Themes/Aero2.NormalColor.xaml | 160 ++-- .../DropDownButton/Themes/Generic.xaml | 10 +- .../Implementation/MaskedTextBox.cs | 13 +- .../TranslateSelectedTabItemConverter.cs | 59 ++ .../MessageBox/Implementation/MessageBox.cs | 47 ++ .../Xceed.Wpf.Toolkit/Primitives/Selector.cs | 54 +- .../Primitives/Themes/Aero2/SelectorItem.xaml | 16 +- .../Themes/Generic/SelectorItem.xaml | 16 +- .../Primitives/ValueRangeTextBox.cs | 2 +- .../Implementation/ContainerHelperBase.cs | 6 + .../Converters/IsDefaultCategoryConverter.cs | 45 + .../Implementation/CustomPropertyItem.cs | 24 +- .../Editors/PrimitiveTypeCollectionEditor.cs | 9 +- .../Implementation/IPropertyContainer.cs | 4 + .../Implementation/ObjectContainerHelper.cs | 3 +- .../ObjectContainerHelperBase.cs | 43 +- .../Implementation/PropertyGrid.cs | 69 ++ .../Implementation/PropertyItem.cs | 30 +- .../Implementation/PropertyItemBase.cs | 43 +- .../Implementation/PropertyItemCollection.cs | 9 +- .../Themes/Aero2.NormalColor.xaml | 14 +- .../PropertyGrid/Themes/Generic.xaml | 14 +- .../RichTextBoxFormatBar.cs | 28 +- .../SplitButton/Themes/Aero2.NormalColor.xaml | 214 +++-- .../SplitButton/Themes/Generic.xaml | 10 +- .../Themes/Aero/Brushes_NormalColor.xaml | 8 +- .../Themes/Aero2.NormalColor.xaml | 84 +- .../Implementation/WatermarkTextBox.cs | 17 + .../Themes/Aero2.NormalColor.xaml | 12 +- .../WatermarkTextBox/Themes/Generic.xaml | 14 + .../Wizard/Implementation/Wizard.cs | 3 + .../Xceed.Wpf.Toolkit.csproj | 2 + .../Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs | 2 +- .../Calculator/Implementation/Calculator.cs | 23 +- .../Calculator/Themes/Aero2.NormalColor.xaml | 4 +- .../Calculator/Themes/Generic.xaml | 2 +- .../Implementation/CheckComboBox.cs | 56 +- .../Themes/Aero2.NormalColor.xaml | 169 +++- .../CheckComboBox/Themes/Generic.xaml | 222 +++-- .../ColorCanvas/Implementation/ColorCanvas.cs | 7 +- .../ColorCanvas/Themes/Generic.xaml | 774 +++++++++++------- .../ColorPicker/Themes/Aero2.NormalColor.xaml | 20 +- .../ColorPicker/Themes/Generic.xaml | 20 +- .../Core/Converters/HalfConverter.cs | 2 +- .../Themes/Aero2.NormalColor.xaml | 4 +- .../DateTimePicker/Themes/Generic.xaml | 4 +- .../Implementation/DateTimeUpDown.cs | 20 +- .../Implementation/DropDownButton.cs | 39 + .../Themes/Aero2.NormalColor.xaml | 160 ++-- .../DropDownButton/Themes/Generic.xaml | 10 +- .../Implementation/MaskedTextBox.cs | 13 +- .../MessageBox/Implementation/MessageBox.cs | 47 ++ .../Xceed.Wpf.Toolkit/Primitives/Selector.cs | 54 +- .../Primitives/Themes/Aero2/SelectorItem.xaml | 16 +- .../Themes/Generic/SelectorItem.xaml | 16 +- .../Primitives/ValueRangeTextBox.cs | 2 +- .../Implementation/ContainerHelperBase.cs | 6 + .../Converters/IsDefaultCategoryConverter.cs | 45 + .../Implementation/CustomPropertyItem.cs | 24 +- .../Editors/PrimitiveTypeCollectionEditor.cs | 9 +- .../Implementation/IPropertyContainer.cs | 4 + .../Implementation/ObjectContainerHelper.cs | 3 +- .../ObjectContainerHelperBase.cs | 43 +- .../Implementation/PropertyGrid.cs | 69 ++ .../Implementation/PropertyItem.cs | 30 +- .../Implementation/PropertyItemBase.cs | 43 +- .../Implementation/PropertyItemCollection.cs | 9 +- .../Themes/Aero2.NormalColor.xaml | 11 +- .../PropertyGrid/Themes/Generic.xaml | 11 +- .../RichTextBoxFormatBar.cs | 28 +- .../SplitButton/Themes/Aero2.NormalColor.xaml | 214 +++-- .../SplitButton/Themes/Generic.xaml | 10 +- .../Themes/Aero/Brushes_NormalColor.xaml | 8 +- .../Themes/Aero2.NormalColor.xaml | 84 +- .../Implementation/WatermarkTextBox.cs | 17 + .../Themes/Aero2.NormalColor.xaml | 14 + .../WatermarkTextBox/Themes/Generic.xaml | 18 +- .../Wizard/Implementation/Wizard.cs | 3 + .../Xceed.Wpf.Toolkit.csproj | 6 +- 221 files changed, 6997 insertions(+), 1383 deletions(-) create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialButtonView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialButtonView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialCheckBoxView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialCheckBoxView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialComboBoxView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialComboBoxView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialControlsView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialControlsView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialDemoView.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialDropDownView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialDropDownView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialFrameView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialFrameView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialListBoxView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialListBoxView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialProgressBarCircularView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialProgressBarCircularView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialProgressBarView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialProgressBarView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialRadioButtonView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialRadioButtonView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialSliderView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialSliderView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialSwitchView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialSwitchView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialTabsView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialTabsView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialTextFieldView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialTextFieldView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialToastView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialToastView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialToolTipView.xaml.cs.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/CodeFiles/MaterialToolTipView.xaml.txt create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Converters/EqualsMinusOneConverter.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Data/RequiredRule.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialButton.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialCheckBox.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialComboBox.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialControls.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialDropDown.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialFrame.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialListBox.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialProgressBar.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialProgressBarCircular.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialRadioButton.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialSlider.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialSwitch.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialTabs.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialTextField.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialToast.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialToolTip.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/CommonResources.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/PencilTool16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/WhitePen.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/building16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/italy.4.gif create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialButtonView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialButtonView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialCheckBoxView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialCheckBoxView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialComboBoxView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialComboBoxView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialControlsView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialControlsView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDemoView.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDropDownView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDropDownView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialFrameView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialFrameView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialListBoxView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialListBoxView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarCircularView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarCircularView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialRadioButtonView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialRadioButtonView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSliderView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSliderView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSwitchView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSwitchView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTabsView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTabsView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTextFieldView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTextFieldView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToastView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToastView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToolTipView.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToolTipView.xaml.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/ToggleSwitch/Converters/ZeroToBoolConverter.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/ToggleSwitch/Resources/PencilTool16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaterialControls/MaterialTabs/Implementation/Converters/TranslateSelectedTabItemConverter.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Converters/IsDefaultCategoryConverter.cs create mode 100644 ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Converters/IsDefaultCategoryConverter.cs diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfo.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfo.cs index 5d0a8f10..a2dee8ce 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfo.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfo.cs @@ -21,7 +21,7 @@ internal static class _XceedVersionInfo { [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )] - public const string BaseVersion = "2.6"; + public const string BaseVersion = "2.7"; [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )] public const string Version = BaseVersion + ".0.0"; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml index e5c053e9..2070ed88 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml @@ -957,6 +957,7 @@ + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Button/Views/DropDownSplitButtonView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Button/Views/DropDownSplitButtonView.xaml index 6cf27112..be994343 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Button/Views/DropDownSplitButtonView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Button/Views/DropDownSplitButtonView.xaml @@ -29,46 +29,85 @@ - - - - - - - - + - - - - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/CheckLists/Views/CheckListsView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/CheckLists/Views/CheckListsView.xaml index f0efccfb..d892e26b 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/CheckLists/Views/CheckListsView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/CheckLists/Views/CheckListsView.xaml @@ -88,27 +88,39 @@ HorizontalAlignment="Left" Text="{Binding ElementName=_checkListBox, Path=SelectedValue, Mode=TwoWay}"/> - - + + @@ -176,8 +188,9 @@ ValueMemberPath="{Binding ElementName=_valueMemberPath, Path=SelectedItem}" SelectedMemberPath="{Binding ElementName=_selectedMemberPath, Path=Text}" DisplayMemberPath="{Binding ElementName=_displayMemberPath, Path=SelectedItem}" + IsEditable="False" IsDropDownOpen="false" MaxDropDownHeight="100"/> - + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Converters/EqualsMinusOneConverter.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Converters/EqualsMinusOneConverter.cs new file mode 100644 index 00000000..f722de73 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Converters/EqualsMinusOneConverter.cs @@ -0,0 +1,29 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + ************************************************************************************/ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Windows.Data; + +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Converters +{ + + + + +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Data/RequiredRule.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Data/RequiredRule.cs new file mode 100644 index 00000000..8a733688 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Data/RequiredRule.cs @@ -0,0 +1,27 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + ************************************************************************************/ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Windows.Controls; + +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Data +{ + + +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialButton.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialButton.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7536a9bc0c77f61c3e4a5cee857ce15eca6755 GIT binary patch literal 4551 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 literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialComboBox.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialComboBox.png new file mode 100644 index 0000000000000000000000000000000000000000..43296603ba96869e5055ac073914357af409715b GIT binary patch literal 4231 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 F>>mYdornMc literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialControls.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialControls.png new file mode 100644 index 0000000000000000000000000000000000000000..6480059c3abe6dc51cf45d8e8799b3b9022bda87 GIT binary patch literal 48541 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%0D-^br=cTaMANSY|F{yZDj&n@)T@t8o0~tJ`)z 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

^x5@qjz=A!40yX19y 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 KT-G@yGywoyQ2T5E literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialFrame.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialFrame.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad3882333abed1e5c30be29290fbabbccc49555 GIT binary patch literal 10645 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 literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialListBox.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialListBox.png new file mode 100644 index 0000000000000000000000000000000000000000..ea0c6be63f3eda0044d8e9257fe46a77d0c6576a GIT binary patch literal 3574 zcmeHKdsLEX8poWrt2$F#S~59K&Dh0art#7j33l_+m`+)0rqIpowqC$X38L9dY-46d zhS~>o*)lUBBS!_1jN_I1NKH&9B`-kUAOj@@WIw~%J!faPvpZ-0*>mO(4(EN(!}~tZ z^ZWgt-^;o0{JpJaFP@D+Agp|Sw(LY8rsW|J7H%`A!8`sTx30lo7Q~(2n-FXW*#|E^ zirlz;BLY#JImfVnI=r407NBPaP^Yc5Aww~{k=4e5Cyl>OogfuJ19iIc2 zekhJsJju;vVfaGiW@MVB!cz+L-!uoJY#+^ z1y~xL5E0x@x5^1MNBfwsnQ7dE6t0v~Vc8 zK#osNgF4-#mgmjkezjU@}0MZ6%78OGJfJUh}tROu9F{SSn=9+V}gj4C2!7?!s#g*9q%#20e(d-|eO#xlNh zw}}#%WXhqkG1VEB2{UB*>=K;m3S}YWfu(|?f;t#!B0vqyf-hGRtn)vIDFDfl{#)UW zB|zAd+I(ujgz*lxazYU-WO>97)rw?BWj%gkG{)7`lrJ;%boJn!oiEYvXEj1ojI_+6TrZAK001y^d4v~Pn(5E0()G{0# z$YI+6Jyd}t30@YpL1SG8Nv0)$a>5G=CqmO{aRd48E0k{rFA`^JE`#a=VbjXT3yF!& zb2=PIr&Q2)Vje@&(lMsBI1u87RK8?zFacUBxOp0^(NSXOboI@G+uX8*9braS0n*4~ z*T!Is(Mo#&&qf88Yh_U4RIHl{(tG;L!X*v7cZW#}p05XjxX_2%6U-yzFa$iZU%s`Mj5jb&g?cQBkQW} z5+$NxnhZ0A{J&-F2N?b<5pe0nsLqqaHSI;MSb%TpVqBHWN*+*-Q{<1t{9xgmwjC@Ki400M;a@ z!JH_-^#>PmVn{2?z|EWB`$9VybWh3q->HVzw4l>hIZNw+Wy_QwE7}P-ufRw8s!ss* z41F>Vl|}T~4vV)$UJ>|Z4W~htL>f6%QWxXCJe?XLy3<~^$^GK{i2tSEziBT08nx`= z>ge3ROtAYFg!k$sY=iyL+N@uOGnF0}3oRv9>coYuo@PHF;Oc=%Pg499Ol%gls=26F z^y7&)F;$#S0Z~(vVM`frknmFOPV`aQ_D0j4(x2|i%x~xQM@8{QyDy7vaj$8qX1Lbm zY39`)eef{J&bd|P6;ZF6UKlSw)I&2q&gh14_bbpS6f-_K#04FZQd8W`ElpZuHWy^w zDFJ6_WDi(f;+{bd81xc<#F2iQ)cEp5LM&U}uPXT2cmyNxc{iSc{LJhP=^YHUYiwQ! zyCXx&3Au;X-Y9PyG=#~A-v9?6nlQYoxFJDl<@PDV6OVQ7vaL7ryT@Mh2slM)e+5Pe zinx<@HJyl4xS0|#q!*lAldmC^(20)_N(MAyV1s_r_FR;Vrp78mUz2z}X<&rZyh^un zz4HJIhufzoq_=f7iDo4R56(@OiseXVGR&a=!p48!kes6PRzkenN}+cUg?>Vp9-+Z| zU**?v=;3c{q0oPrvN}8I@F%^ZGnR_uOv3dmQ$jcgqL^2RuO65y6@{IPHO{Uiw^DQ^ z9i?x-XmoAS)u{X313eVvQ@45d`E|!`<8(!(1MQTAQ0+q-YwsyqWdV4Pmt| ziFrg7Bpx?9H4Mh&by<3b2mZ-EQt0wepiM(9WT*j6D$CLwy}vj^!PR`T8VU{SP<-r_tJg@a7NR<^`den!|E8DNe}=Gc zt>RAY{iU9(2-b+cdI0e^Cne${6SVY%ll)`jkAD1r(xINgFgk3c_LQRrt=RB?HH7b0 L|1IoI`_ldnS1{%| literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialProgressBar.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialProgressBar.png new file mode 100644 index 0000000000000000000000000000000000000000..4bed042ce4e200f34f2cfa043e38ab5adc92bb8e GIT binary patch literal 2649 zcmeHJX;hMF6#m?D%F-E|Ov|(;E6c6LB^N}E1~)Xda6z-xN(FK>j3~Dn%Sy~lEiEyb z#8RL#{0bvIT9#S4u$UsD!+84BX*#EK`rD89yyq_OeeSvUx#zuE+XCPV z<}H~A0KfttZ&)w@XhHx$Bj_hhwdQA=b7J+Skr)j30%)&HMQTC&fG5He0Pf`IP4CuG z%X1HVhbIDne&c^f<0-acpISHS1M}Q|bf=Vmhu8xHp7!OHmcFoRD~J20!>;I_xwJ9r z6zu8BrDfN%D-K#(9@V&1pxM46D9G#Ng@)H={Oa16v80*@Dmx)17sH$Eu5@*S zPTBT6)JZdC>UbCmG?!;#G%mnEz`G0uScJ2w(RKKl;h1qnwfV;?R~$D=-X#%Atbmzl zBu>)&Yo+_11INaPxE~C*7oV=(2o&?HP)}qMEv8QWoSG42_4QPxSl(^@`vMuVL$(B%a7V6{M*TscG)eaDsqIl0@s!rOaC~GnCHIDG)HO|K; z3^ae4vT6mEB-s5hQ<>y+rS4?g#yyarYc8Lo<0>+AXwC+W`*Lyhx z{V+-o;z(Eb>l81Hs*SyV!&f^lD3n8{?2aeq2Y8p}(xcx#hGqH0DZ0jZ@Cn=9g%#5y39Q>U47 z4>jQW`TZB+Y9j?7rVRCK-HWKwCxNd@{6Qd$g6+s%0eM-{52s>6YtioS;~DBsS%1+f zz@ps-xH$Z^Mt+mIO2nfJ-BQQ9a#DGrZ+leF9G>qmgAi1N6FT({%rp!OFQ3uk4)xLI z*F!`F7!8ZAzfh_HKAi+*t~CoxUl%^?*wf?oVY=leYVh^U?Yj)WrX>Fp!uHYYHiOa} zrV8rRDbhC=MjAjq;)(Pmemxem> zji#lqWsAB$&fsGvhYTH{NMRfw}rZlHK8ms~mI5(;V^Ld=C&eFy|4Ht%^ddDa-I=DB1gI(zSJdkRO znyaQTrZ>*PrmgAk3gPNME|DUlY7B>Y#Gd-j*oe~XCqZ?H0ZS-@8NaHHy6izZoqNw? z={a&r@w1?m*dtxOr6||fv3=^q{mf>iZ=%@u5%kCFFTTa^pZXs~{ZZ6UJJwgo)Gy_y Z0wfo5&!W6*D)l-D_-qY;(Y$tL{0niIj%NS> literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialProgressBarCircular.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialProgressBarCircular.png new file mode 100644 index 0000000000000000000000000000000000000000..6cf8142128c8e60c8979db03031f8e87bb1de2f1 GIT binary patch literal 7656 zcmd5>WmJ^iw;wj5CrKG7)t3*K?Vtl zL3(IpsC&luf7iNS?z&&^2OidQ&VJ6``<%1m_nSx^EfsPyMluKlLawH&^b`UimW4ow zo?IpdBiHzmtKc7z$5RzWNXY>63V69-`#|#n1X7NIo|uz@_baZdMjj9dMJwTtsM96i z3Ie$qsHXHl&)0Ng+CPrT$NcMdAN@iq?sV(U?_cZ+dG>BBp-*qcu~CPOP&~doXrD~{ z%Kp`rQQ;~XChj3L|Hd`-`*CWc_k>2@r}Gzols0?o;jVVI>3KNwHwg;5&QkU-b-v6V z+jhZ)H6_jQ2kg_UTBzw+^_r2x`_13{rdI`mmwR3Ie@^c%5ka;n(WHi_W=8;@Qo zh7Is89}OMQ6?4g0H?1wX$lFhogrJ9tzi>i##uba)sS1bQ&63JZew-A+r4bd$cor7( zuO?VEH(#D6F1rro^v4V4N$M~LS^^BhH;??G{?t%P8l2172qku~>v-@3tj>q8hG=&M z@xyrgZiCup*gm?&RQ*^QgZmj&{??2^0hS4KDqg=o>zBFbc3-tlfyS8+UAOi0z94kv z4GN3rz%72({d1)Fat9{(GVP^@`MZSq6dIQsK~;b3RvtnoA=57$tTT>wUitLWF22y! zQ`ISF;pmmzG2xM`x2x2c=4&orM(m8Yj2B;{t!Z2oyqH-`u$qzLU7w-=X)YBHx18O% zknRfVy-f4>{vD=vTdX{Ew`9Ju-AV8WNo2SkiDh<>puK zwn;=A1?BuHntFVM)0y(_ehpO@C(a}X%iGv|oy2nT^St@M*{jICLy5)3pIL4Grt#`M z5pSML_nGzUZK=$~Ii9!w`vpHFBxC6Rcw~z1+gm(ri(81gvao8>A^NVP-=7+mp*D3G z@ZxY~&rQ~$kz$JpOLEz!V&KH1w*4vU|h!!}dxt|9sVRJkg5^ zF}KbJQx&!a2ST^c#ig!Y4@~~k_b&2-2ZIChYmY)r$hcMMo7Y0wJ{S8|e!y5_A8F+k zZ4mb>6DCk`$nDh){BzX?Z@3*-K3y`(nW(sXoaII<9O>JwMJ4&+%M6L#MS}SitNDye z24=WZqX2>K3UZN4)5ONQMlO1>UgjQS9p}v2#x55{u7SaK#Ud1bJh(*2I!*&-$w#m`R8I=pZ0c4{d!LW(5_^(c;nmdo9qsp^dw5#WAA(50bTsa#`| z-Zz9#gWUML(5c=01U*&oA@2yO_1}SQyUk_F$m8H%wr-u*f9;9oL{T+rQ-|lkcUZ}W z_%lT@y~FE5nUP3uvT?hwvIM_AM44({4Q*2}+zX2qB`SZxZp`?$1GSl1>lP)5{zVJy z8-)w|!w0p})KD4fPSOdJ_{a0R+8i@mnZs1qm~LC#V}Cdj8eI%Umdf`VW&R?YCZ5y~ ziBC(?44x}!%Uw_uD^j8UQspb_Cz3YW(Mk?#WY*o0(WOsvkY(6ihK7$ofk zK5Sa79I@WiY;=ZSMLhB;qZ%!p6WSgeEUURjG0YE1nEo`HDEr*;y+A;^*QX0=t(e8JTX+Y~FwGwWw+( zp-=?3|i;5<`nV*3>%-~b_+H$8>Kco@nvU`ToMV; z>TDQfb*pZrE##7!=l+Y^9cabxVa`PP4|$}6r*k@tJ;JjZWu3zu=e}4L4Jc@WMeuzb zl}lsV@6%h$EW^)Y)%0yMIe`(=XV?#Iar2Fc;gVYh+bRS}ba&HL6ptya*1qp@Q&)+i zo=OcwLdaWqtaOi^F)%sk&L>_a@?}~`_>2?-tnnfCeW3yMc-|{4*nSGljDAmtgM(Uz z*KFm%u_SR%NT-Q^O)aJI_}p-26y211TO~%$2QHrLChzgW+IN1w^{cDFP2%QGjD{Bp zl5Vnv2dnVJ^+jF*y$3arTKBO~a|cvPIcMe|hh!8q9_(|;NoQ7DSVYC$A390Aw{pnP zq+jDPhF=7&22l&cth9FoUH61|z_w2bYa1Bq-?Fv5_t7OVESDia6sTQ`sed2XUhSu{ zCusOIA_{m>Pb2SuG)_Axpa-4OoNFV$h5TmCrSww}lF`=Jf?kBZozy(o;A zp3`kc=Q7X@@#`toK;(Pke~-hUFDvebs?GSWDGpe*?34;j>0oQqZ|aE8&ab2ML6$hP zv@WnRw$@G6xxrK&cMm((<5j3V{Z>&DBtDHSSja3*c9mmIp8-wNys%mPJAb7a-qRfo z@=BO`X}h%(ogs*?lU#{-;}Y0XYj2gk`9N;c`grC@?*Z&5X##Li-blp6I2&d&mVngH zGOnY$@#*w^ShqVEtG{Tt&yDpA~M11tn8=<5uE$zhUY8itT(_@7;*{5 zA!+Bvn&c`rqRRfY#d!PKM(kCn?hsk;bX5ic*3R`mtShX5yy zeJoQimg)FJ8O6CNrC6hL1zfKlS(SIw$+GgXD$Sf7+HPqnG+MAm=O!?-&H9k(^T3-otgV(7KZRna6uk(68nmNW!IkfRRL{&@ zhhPN3w*NuHMv(rQ492)x)(?9jaa!?joHsZL=WQhwpG=5wZc6spUwH!BvrG!Jqv{@# z7^tO_f|8MX#3YELYQK}mc@I~N(spv>KQ;$b@?Lqu3nV!!%cp)ATaUTP`-uo0T@Po< z(I@08VdE6#N2n2!FFQHX`DRiBb)HWy0ckRZ;<+bT2k*5ILi9Ejh`)KTFSQr`%cu%3 z>b5VC(3~UZ3H@4ORfQKBrYbvB9;3hNcH888j5CqpBxSmWH);Fo&7Kl#xLEcNEn$q} zG>FK0>f6T&;g*4H`x-MEDyTeMMz5jEmG2-h3>OFPbUSPA`IUK=c{*N3uCXp8@k@YX zpqbuL%Kj;1UgC3nv6zhucK>&hlQyIC`H z(G{eTvJ}b0m4i%JDZ~Al0V0?y!JC%wPxBAe4{0ev+n%fTb^I}gI)gLPkf0v)=53I( z+H~L_$bfQy^qL#Ep!7dJRhvcJI}?aX+8W_Ogn{~tOa%wuDT83-{HwLp%#-$Aq8o@oxZ`^HN+ z=HOku0F&B;y9SnoWg~be`uvvW8hM@5wPr+%t zbC(aM;^?Qg@gd~-6#xnDu8!k~S)HCbB_9qzk`d0;q9E(}EbGH~zjOO6%#;IQ_0Es% z)mx)`tP;3}elxsz7Hp@wF0oss--^c6@-%g0B>=XFauLc1E?ErhOB6gQ+aKv^MxCa8 zZuBsBfEZr^xF$EP%c~vz;dn~ihDZ+*5`-D=mXd8D_q$yXL(2c5LPv z6VC&qqHqQc)os#=au+hK2@q#8vPI>jWn-4q`EJlE9VJ*7Fpjsl!I0QIPqt2&d%mUZ}m9* zZH>&ETKAUav9`|}Xy%U;6HKefaV6w`B+C$x1(O^DQ{__FY_{%z z??bLe_eEbFt7k!ak@j~M6GEf5*JEwH|m(ipm zm_G&Ia}SYcam5V04tsVM61TtH)OaE&0;*ZE4c^hF_jOq6(8TR>3xJp$8L8!8ve};! zDclEe<4Wur1|`FSBU>%(oh;i?vDIk~Xd#6E8GU9sX!q@a7HsWP&Ota9~(O&W(rphnXwaAzMwT(o%R>06C1jYoK7PjAr&0vS132B zEZ7`3kuqGnWkSfGddV_rVm_3Ua&137;sgj9dLDzu`r@P`n=!x-MM}b`{JH{k#2Z zOt(93P8<0F&b!|JVX-nmiXQSGj=mwc|G>p3D=JQt2S7oD@BFcqeg}iXyBOs&O&`}3Uur6#k~Ju z$uh6r%fu2E&8e43g&tWHp3wZUeN=lxlB1Wy{H#qt*==}UAd z0NthIrUOg+^xMi9!Og>d#|7zTwPY2J#M2uB;i=AIZo~2czzor&oipD}sapqwaB)lS zk7iZ6Z2|j{f!NTO{WL#W=iT=%>>sYj8o5C99@c~;!y9x@tqP^{asC+F-Dv9DYwhnf z2CR+JUV$z-Q_6@A`za_faHC;xR!u+_+!;MOO?O8MLDOFKh4@JuN>s8R(2?61z2_ z8(|FQqw1{mH?lNdvz?})@IlVoZ#oxF*^V=oY_2|PThu7xQ35S|zQrQq{fTOIU>BMp zFgYn{|Mb${oLz@ZYTc)nnZ0|qy=X}%4at{Dh zfOHf%61C|~9vs!Bp4)jJJ<{46*`|dH`i#zm_LSC&B+z67%&u1vEZ{M_TTsfXI#b4V za7+m}rY^}*9YaUv8?Vi`Ki{kyT$|*yA~AP!;AP3!%gMQW#M*YyDaFEfSLqorZV)ak z9Vm8xM{yNgps5CNx3N$m`s)tF=)Q@LCl7=EDaE`wzAS*mY~`~B_e`ooB};6j$8Lu3 zo!@7Pt@wBi5D5yeKpcVc2g2PaLo;YKvJJ4GTltctE2C`+s-DUIjQ#EITuKgF95g}g z9Ov2)TYp7s0FKpp9MZ4aTZo;${{1%N*m{02Xr_V}E8wr-tIyXCjDQH`vvtEe(0!1XJr42v^hYlBcJKo#NnN>bQ1a( zd|NNUmFHf1)r+Lc&z;u?!z@GACIv&#nsPl8U< zy58M@PWQg@-rhnPhVS5KopVAo}EYqc>_*YO(Bz{_iGbeYwNDINnY0=x<6!^R}X z;+c|Q*QnN*|HjTfGH=b0SwR(|*RGG+8ohZX1vVmHNf%Qi!_1`9xFsu(7dh3WbOWn{ zq-dBBJ)XiU+%O@V#44K{k-9jgl}`zNFsZ7uIyl@E$3M%U%el8`g~Z}qLkNHr^kiWX z!&F;5#_nC+Uk! zWNz-jIe-v@c2qQ1%6CO znUqi5-h|Uz-$Bdqo$ZUOtu+z>Xgkyt*761ID=HQf$#mFOkW^cdgPvrprJ{aS!6$tDG;I&->x zWLK6)pnfc8MSMMSl+PE?3rWF0EQMg9tBk__r);N{qgS#K7XhWT6dWK^J+M+j0R8BQ zU!iq&^k~xOa>+g3m(n~PxcN$gMLOD%!>S+&tZck1M>ow+ig4l|&NowdMEQs?0_qz- zH>VU+PloNqKg9R@FTjbeYl5fbHvd^S-S$;%nNQkm+0P4i(5#IR)2dV=Q}{q%!f z_By%^nxC<`MFu3AfI>5L4iSZ*PeL9j2jHL{X~2ji@oIYqH5_ z3E|}9wU&OsoWvvr2w>n=kK{iO@C@#+ob2_SU}W3=UohborS19(o!l>eE!dW0ZQ7joB#j- literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialRadioButton.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialRadioButton.png new file mode 100644 index 0000000000000000000000000000000000000000..e09b7dbb8f92984c95fd7499684fe738902f319b GIT binary patch literal 2701 zcmeH}|2NZn9LGPD#BQxyYUSIa-1LR1NED(kOroY*Qp36V5|{Zto1qll?#Y)5tBc%h z@-34V!+bVhLPc|=DB84kx0lCQ{h}>82`EnwfXX%%X`AKY?kC&rH_gP8CklwwXo#YW78qN$zQ{NpP&^)t`E9i)?_1SnrPk|6+l{{@X%T~x<7uLh; z=?t|XhV>XXzzHzRg|kKj#+;Zli21ogU4t`B5u#ts`*Oo?ezqfG#kBusa7{c<)z~r7 zTuH0 zSJMpc_`$EhvxoT|wp*}l#TUwjkK5_ozRVEz-dh?Dk?A&;rU?lv#Lq_}$_w%Wt@mnl^R z`fS$R@yd^c9)0$hWP?Lb6j&v&fCc~&w`l!Z;fu?L$By-QW4XKjq zCLegbPh#6&iVsh8H76}DC8|=?pZecueN#=fPJ<&8>ads=Bf4oQcwkbJw-ZE%Mcrf( z_ovu_uNU&U1PA4@=J)+m5hpWvvv)8nH`x;N(uUKYp~MFsa;8|bM=O2y?M%>aHdm2q)->5DZB!#*pa)I&{apu#Fr1=*WiqEzOkh-c&nMdx(HXuvpF`DBk zuB6tteaD9@FJhgxlMbY@Ad_xyAi$|bU7k4)(&*^%xk$WHSRRkEtz;tCyeCm$@$>zL z*4pw)7q@YA$PvvDa*9BLpd5Lw(4Vs#qqaRH=T+^{{Q+E@`K{N0u`m4^t zRidnX$oL5EJ5z&9ouCQe&LEj2j#|$J8;6RFlMpqpbE-B7*(^Axz?%?KuYHA&QF4sB zDk&mN#OO9dH$t7kJ-iBNQMSt4m%t6QJC2xKFUq=3ql>o)h8)YDApiakrs|<4Dxr9y zbjt6ciC?8-w&OP6-=>Jl=PH^B&19ih=xOR2r@1BTHMUE- zx%}F};c7mLTjmnPo_PNKY%iuEO^v6{c7 z=fF{CXFI27cu>ynIb(y}EA@9>o3i5##31!PH?qyr>@kYI11#weYlx0W2qqA=`R@du zpeeAm3gOj+uKgtyzpuMp_b4$wzKYlxeDxqcoF7^KPL3jk_-S4EDQGxV!k+j_&_@dy zp`+E}q4cmuJDjjIZr0dhS9OU}L9Ze6QLeKL?y=Lo=s>q}S3yj_?t=%~1km$FpzK{{ ze+IOUbK`g_zW2An53LP7tFgO{-(nBbG9Acdo-n6pKF8iM+ZcZG7_ND=Btr)J(HG}m z#PU)nX$o@Tc6l^Tg-t&dM9GkjuG0Vp%IdqAl>uUTUQk_}O>Z|N3Q9_?Xct&pX#?P* z3^8+yuLhgNzIWPPwdv=}4Gw98mdqcVs}}FX61jMM)0tc?R5)ci?EMW23@BgHk_Sr+ jEHUsuVIXr(y`bwiecvw0aNRlW7ZN}o^*uuM2+sTmb|@juD!M1dLQ}&-iJP%wb$NfoqhKH{r1^s|AE7} z8|W?70|3Cl(_^O(0BD8-fCf@W6Sh3*^KpiSMvRZU3&0hd4#LVDg0nYlEKSp&KBNun zx?~Uk7y$U~>Fm-Fk?tOaZIPZko%hAzp|{uzSrjwT*!Jfki>0eWRv7p#a6LF5;w)z* z+|^k*8n=;;x$V;QvcV5W^X(dX(L zD{pCT6afqc2@k}UR|Pkr5j5M=gJO=~SeHCwZSBzbK;5ruDiiu|)(2LX8v$FSy1)`> z&Y4tDbGsW#WBDBx4l_@(l{S?&D1nL--;Wh$?8pcJ{o2zoi63rGJrxy5S~tc<&Y5sU zarWVh@o@urgEj0dL0|eVp1-_cNGTdp_eOxDTJ&Jrx^KSt71xZg5>m8`|Q&Dzv)ys0z5;!<#bpnayO zq}yeWRQDWI$=glwy)RTve>*5!n3NZWm|vkbY^zz<;dsXyfvRLVI@GXwz*NS0$#6!on=?`73#B-tfw}J!6nJW30C}IWf z0{A4PhCq_6>GawN;_+py03i!m)8Sf8`&tRQteA~GIr&s%>ZW#aJh38(4SK7m+Y~yu z%ka5nXqy(_$KNFxJc?D1n1tT@*A6PTSGGa=X1gbnk%gJgp;oMW5=b09(l1XGI!%ys01CXZvo z#a28AitZ8|BPh5s7ap<71xpr9MD6g*1 z{!Bgz2Ngch+E@SzMR_}%;_LP(d0Dg8UBgO5=o`GsYQ5o~Z4z4~saSKu8^vj)&Wytn z**7f?9_INnjJO&Q{YqDKMCAH9lw!AcE8U1|0MW<09D3{%dQ!5;O<@S&=&ZY!sFDq$ zd?EGzw=q$XMVIf)>%IJB{H+QI73c`j7ZuqMXt7nL$8)FBq5Xk`Qy<8a{bp?>r!IRt zh>sm$gD#!rSUXZ;`BXE@QR#Nz)L6|tiM_^;Ja?&6%gn^w19h@{=7rgXC^h{DCNs%H zDOpis_Q{%c!S=Y}ZiCr(AWEkkEOt9v`K2~K7l}Od$>gw9_tRJk%{EfHu)NGnI!`pB zZ&;cXF1xsRi=o%o_epuZ)n&v{Q`S)Tl2C$OP^*gGGq;c>T*?jWZOY^7q578|r)$wHX*=~?K+gbyz+N&TNK=gUP$GTN?F z_*4smYT7vv?f%*v`|63mpHq&xb#-*u19`Gs5axtnr7@E}#cX=@(ZkZx(l(+ahvj-e zhcRA7qCw|R1f2{#9ND`U>Rz&TH;UsxMfb!h%|sU)i_#mkB-MU8vx!9wl=KgMr0w&A z?na`vwNzW<;2J7CJvlffJ*?JyTTz^#ysB_J^8>ExL4Af|vD8*6Ve$M%>gUb;g;|@a zMG}{EbG!IC*RK~OzUZubtk~;E^Y2V`KC~fZk!@hM ziLtj;=Y)1JY=WpNL3GvlAfl*u8L`SVB*Cpia-%8I?DF6Tf literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialSwitch.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialSwitch.png new file mode 100644 index 0000000000000000000000000000000000000000..9cb2f43017e3574e91580155b3b03609a2fb9668 GIT binary patch literal 3272 zcmeHK`&SZL7RGAwPNK}6GPAVqn!6@bGn$J^UPH<gU;2;3d zTw-B}{FBN5^QEJqsQ`c#>+3Qb!aj}y0D$3shYtp4o>Pj@Ma1-+A$6@NYP=QNH~HnE zpHLAn&fd9m8`w3VPYZhf@JW(lDx~QK`=M37Q^?8SbsN%3(}^C@m(QrSQ2udv=*!l_Ds%m@U&g#>ctI8T(!Z^h2n(_|E9t!&zLG=3SrW@*;<|1Gom@ z*J=xR76So9y}(g5^uCdMH*T6Qw-$n>0|!VJ9U9>Sb+gQE|_JD8P!QTPW}qi+RM)4 zLgBKCE?HH~^9#YogduJ?g+iGJo@})}5`;6puR!a>hCm&)QMpu2q>wz&sH_Dn*$T!R zHAJxrRGW>O8>hE>)OaHtd-d=9P4xCnsNnAv^? zHqi_DhR?pw%+wDQb*CFcn6sXPAg5#adi~52-G6Itdu%FO%DTo*UVT>|RM*|z{YtkX zxYV8X@eJXSO8&%2mhGV#auzyFU~_t#7H&RoDAm$Kb;iITvb7!mKioXYN*d#ERzj$5% zoOr}Jk%;yqQwej7sh$fP(2S&{cUjNy%KrWuVPLSGeL2};nR+=koIp6#^}=Qx^VrlC zam!AXvBvkqJ~}?bqrJ1^VP{R~;zD!fszmk7OTdE=RvfG)j-13nnDHFGhH;P_`Q_`g z)Qu6~NeW~JzBryPV=7KlQYAkNTIIp)y!Npg+;$JtQl#3G8iKEL-B>83E+$82UASP% z*@D7LCzSG_T6lNd1TCc) zJgp;FmABf`=*H*o(NMG$SAv(75=*>#BF-nvT}YEw?rNfhxQD>^XVMq(F-b0SJe4w;6F+1ZPK(1Uw0 z#ggg|iW;YPHxQ<-JLu*_D69GJ?CtG8EU%||o8s+YIOz))5s}c>tDlCIaPV<+gnSp0 zfKGTsubaA4WsB}vo)sWft72F{K!9(_b{BJfYBaZ^`FkMkI5{#+v6}F{krzJfAk5u| z6)rl0M#9cQtD2Pl)P!7h?zP>V$tlKcTO+5uDl_Cj!e%6lkmcwe^m zrH{r`_(Gv@d1>jtY_Q97^dF=6r@8&uY<~(Pcjh8zz@^T(N{y@K9Vf5gWrRT-);VWy ziWw|bCY4gLE{dKfi)c4+(!G|L;mKxM*`DyQPsu10s(#2sb|R682CP0xmeNu_j#drd zaX{$b{2FcJ1#Rh6i@TLLo{~ZDj6R#J8Xz+D8ObBcK@bDgA-`s+f~`C+tefF7^<}8d zE@5f&zp2o6>x+IiQFcIlyu3Ab{6+CL-OC>#HoLHWoZ(Qnhz=Z<3C(+XPy3N&}%pxPKP9Cxfm+WR6X*8Y|n{W2tvR# zuOTHculP?_++;(Nj1?`PRL1YgP<~P>U8rjZMlqdn#LWX_D7K-#zH7FY+|aimh;Qhc z?v^)fgXb8Y=UeEM!sxZ`17m-H+Wqf(`R#^3YV!DobY~)oU_*4^W&a%e`IBSd+q(~z2E)r=Xu`m zi#~5|EWSx@69@znH~Hm^B?u&R5d`{4O+;v=rL_orX65fEKTBgnP)V2kJEGJNFbxYZ(|~OKEGXOr&NCT2sen75%ybvOE|Kr1j!E5P{3W-eAsNkQA`I8^(up1UhjiY{|SnhQP3vJqq^bE|@;$S`RNsW9!@Y<<#*U z3D^&8HnmI45z8M|A_sl3V(@I_E=9~Z)AZ)@F&_mB{9m8J{g)h|dGTIlV)X*Nq<5g- zD3M^FNY@A+IfRA*9|cJ4m%CuP_JFvEYrh3Jp?jARCY*_1S?P5XP6J2Mdl`Px&Q7F# zOKL{hJTZiql5Os~vZU#QT#mJ;3_#3tMKtpGb<0XwW~SV|rLCnrS!wGmc?g?J%Ohej6~j69?_7rC5;!3-KO~zO-rl z06jqc4E{!_LuIw}XiR@aUqcDIjUc9{pa`WaxFJf`Eeu;~^f%5%>kc{Os?D_6U1R9p zVusY#Z*N#6jl9!(pUrK4O>UgSO@pBiM#Ur@_N$v0hjma~J4YDq?M2;zo_ahCsRZa@ zDP}n=J#J_iSSB`S&~nVDV~f7?0oC%O z$+p6nv*2*WuZNuxm7`E&A7e2XCe7)?M>&cK_rgMwRo$h!U7cdfWX{8{w>{(OYgFVO zE$V4Mxwj~a@IN}>?j!kU9p*`>EL0@{&1#CG$Yx`I#(*@og;HAkooPE%8&vWvs z1?RnJgAcrHSXLMzgA&7GzaE+F z`CyadTKtn5QAV?BrAyUkSf=8Yg6bX~$wWsw zFne=>ZzPS5Wa7_+=R7_X=}5)hMr8+R zJSWf(NYOl>^J5d80t^V$;w-} zH`!q@@X|u4h2It`5wY8}vk@OhpnOgr7V1AqeIAeErATC0cx1={$`g)!4}xRu!pD@Q zdDdH#+*B_GvVv2IM}wdQf22YYxM4l5AI*#@ps1bxTuE8@nGzN7Z@J>pYYOsOl_IQ6 zhgYHbl%S(KsB_|6t9h2besTGRottN>??-jkjH_AmJD%J3DScz47ek5U@+Y#i1=-(D zOvQVSk*^dWD-3;KnbM3nW;HQVeDQDO6tBiN@lMtH3}2P1<4d6yTiQ#dpr7DJdTM#blNhQ&ocboe8W0R%bPy`s&sJCl-k(Wr@D2s z+{8%h<0)=cux`0OrpKJ0iy4a|-UYIT-#&$Tjg<=Iw;5ve-n$eu697oVDIzIE(rDR3sc zxB5KLE-H>_xS~0^+&SIFe?r0?Sy7u8Z61Wuea6DVPxagj9Ge1R7MUaRP>sS$`Zg&bYG&p)Uz3^ExtTYYA&g4LA52@n6N*Gy9=b5{%&>a)S zu-!`hK;qU&$CEf&qZ&mHjMADoGW4={7j)gPwP+XROy8TNYG%5~U8UV}` z=K!i%TF*O5wy2Y36v=VsDzAg4E)sNSd%(0^YQtgO#SRRgQHF2&nwW@&lLZ1nM!JZs zho9lX{Pyd&J#1nRiD3`5JX{Kgj7}MI*X&r{x=E_~f+~w=*30ii3Hwq7}`>3;CEu-^1aje&L1bl#4|GfXsj$ zk4DZ^DrqzG>Pn7NODQaNHh$m%hNyZ@vM~;}&KJyOagtvRO&U|onEfG<&93htVGl$Z zB9YbwFI#Y|WEWg%Ewfw&tDW0%Iz^$tqu+*geLUHok%@mCGU?&b2U$3Pnx6EYp5MDF zTJJ=$^>YRI?VI6v#we&CD{AI70s_nO%-+gluQ=q#22VB{4D=ZhK6qYzp-|AT`>yj# zzW-CJ{JM?D5#ztzx4bE^>+X$SwJCqypH)eNEZ-R`zWJB#?@tWje`AxjD2 zMD1E?t}!kZpUee`DDlTb7ow=J-*{Z=q$GI3zi-Ro@Emy@R90-tqFMKvO}XPo)=La zxq37ee-QJ_Bo=S@`MujSmK})6AkQG_qNHXt@r%0Y>TKGzOz_ADDV%!nu#wg9slRJCN_3A|JTB5ADzIJnYB=;yTeu_Qp zwagl(jrgDlMag2ZCF9o~R2|9PpNng6B$yF;KfdlTL(=OxGHUM$Oaa)el$2D*gkbUlKw}nll+39D{3rjvvbp zyB2t!y)Zn1oL2_5Z)myf9;NKoQeG#DOC9CU@b*V7?T7_W#P>S9Sd0VQ3&>7Xv32Do zC+t1E!gEfzi=>*tLL#r>BDXBwr+uvO{;46I!R=BiDkGXXXY9aIylCu-@l5`g#**mV*olr*`FyN?b zhh!rL6sPAAbI=Qh89Hy5G;C&vDMwt4NLs!PO=z}7vQtslGh?Od@oTMhMO)J*f<~;u z=y|S})$eZsz6$kpOJWX6v^Empd@620rW=j7mL|w)!5t62dm(MOR~WY%_M`@HXHE6&mGMAZfGBkL|+pHoRbWyve8qkkV{bw@x{b z+rI4durr~V_~yEfdGU=W8Sl*|Eivbi;)vlll)rsPGB@VHo&U0*`Y*VdKOCZK9+M|f zA=gvwSu>hXo$aQDFq}CQ*XN|2>~}Yrc?s{G=xJMMlgQN3_~T|>f92Tt1#kTVi>Pv* zB0?J%ORQk5o5VU;P4&WE$O(=TuRyA9tQ1wNY1+XiC^068xY{Po}WCM(R+kAJxlPF9r&zy-W9*Q$F-Z%1C-2c|+TXLsMSk|9p%d z&n(%CHxmkr-wM=4uR65~7K1+wmmkBnuavZsYjiWl)YKrIY}9#WKM?%BRkGvlN~Xih zGQMvw^8wD=>i-W3$Ke@0cCc!yeHaO?mQzQKJP2dac{!gqhHFk0ikn=Q%&q?YhlVCG z!Q<(@XNLKSZa>aK{t`!PB%DlNGs2!)d`r7K)pVEZK~vfxs4$3}Aw~>~=lAznaY#!Dbo!d9jk|EQ$?E z$IAW858U+q1W6ly==uMqrui#(u#6cZD31g8=Angl$Ntl|ga4*d@lH)BcloE%t3&Un VUr9Qye60bQoHajFVtD1&-vQW=|1JOk literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialTextField.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialTextField.png new file mode 100644 index 0000000000000000000000000000000000000000..66d86724401214a20509400d9da996eb89868264 GIT binary patch literal 1908 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 R-TtsZn6Q}8j-$yp{|!uut78BF literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialToolTip.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/OpenSourceImages/MaterialToolTip.png new file mode 100644 index 0000000000000000000000000000000000000000..ede18800b5b09bcfb30fc858c68d86b4215e2c47 GIT binary patch literal 6040 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 literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/CommonResources.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/CommonResources.xaml new file mode 100644 index 00000000..56363752 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/CommonResources.xaml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/PencilTool16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/PencilTool16.png new file mode 100644 index 0000000000000000000000000000000000000000..df0970c4085fd0014dc6d5e7b81d3b02d8b25482 GIT binary patch literal 348 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 literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/building16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Resources/building16.png new file mode 100644 index 0000000000000000000000000000000000000000..329feeb80863822bb125974510b3171d08961689 GIT binary patch literal 18218 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 + + + + + A Button with a raised animation on mouse over and a customizable ink animation on MousePress. It uses the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialButtonView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialButtonView.xaml.cs new file mode 100644 index 00000000..7e705c1e --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialButtonView.xaml.cs @@ -0,0 +1,35 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + ///

+ /// Interaction logic for MaterialButtonView.xaml + /// + public partial class MaterialButtonView : MaterialDemoView + { + public MaterialButtonView() + { + InitializeComponent(); + } + + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialCheckBoxView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialCheckBoxView.xaml new file mode 100644 index 00000000..88b84bc8 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialCheckBoxView.xaml @@ -0,0 +1,46 @@ + + + + + A CheckBox with transition animations when the checked state is changed. It uses the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialCheckBoxView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialCheckBoxView.xaml.cs new file mode 100644 index 00000000..c94f812e --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialCheckBoxView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialCheckBoxView.xaml + /// + public partial class MaterialCheckBoxView : MaterialDemoView + { + public MaterialCheckBoxView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialComboBoxView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialComboBoxView.xaml new file mode 100644 index 00000000..d0dcedfc --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialComboBoxView.xaml @@ -0,0 +1,48 @@ + + + + + MaterialComboBox is a ComboBox that is using the Material Brushes and contains MaterialComboBoxItems. + + MaterialComboBoxItems are ComboBoxItems that are using the Material Brushes. They use an ink animation when they are selected. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialComboBoxView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialComboBoxView.xaml.cs new file mode 100644 index 00000000..2e1fdc6b --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialComboBoxView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialComboBoxView.xaml + /// + public partial class MaterialComboBoxView : MaterialDemoView + { + public MaterialComboBoxView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialControlsView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialControlsView.xaml new file mode 100644 index 00000000..d328ed54 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialControlsView.xaml @@ -0,0 +1,56 @@ + + + + + The Material controls redefine the base controls by adding smooth animations and special effects. They also combine the base controls together to create new controls. + + + The Material controls include a set of complimentary accent brush and foreground. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialControlsView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialControlsView.xaml.cs new file mode 100644 index 00000000..91b53807 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialControlsView.xaml.cs @@ -0,0 +1,59 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialControlsView.xaml + /// + public partial class MaterialControlsView : MaterialDemoView + { + + + + #region Constructors + + public MaterialControlsView() + { + InitializeComponent(); + } + + #endregion + + + + + + + + + + + + + + + + + + + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDemoView.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDemoView.cs new file mode 100644 index 00000000..0524b2c1 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDemoView.cs @@ -0,0 +1,41 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Media; + +namespace Xceed.Wpf.Toolkit.LiveExplorer +{ + public class MaterialDemoView : DemoView + { + #region Constructor + + public MaterialDemoView() + { + + } + + #endregion + + + + + + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDropDownView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDropDownView.xaml new file mode 100644 index 00000000..d701544f --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDropDownView.xaml @@ -0,0 +1,49 @@ + + + + + A DropDownButton from the Xceed Wpf Toolkit with animations when opening the popup. It uses the MaterialButton animations and the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDropDownView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDropDownView.xaml.cs new file mode 100644 index 00000000..27ec0e31 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialDropDownView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialDropDownView.xaml + /// + public partial class MaterialDropDownView : MaterialDemoView + { + public MaterialDropDownView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialFrameView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialFrameView.xaml new file mode 100644 index 00000000..c63c93b6 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialFrameView.xaml @@ -0,0 +1,48 @@ + + + + + + A ContentControl with a fully customizable shadow that can be modified through Shadow properties or with a Z property that enables predefined shadows. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialFrameView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialFrameView.xaml.cs new file mode 100644 index 00000000..7e538ef9 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialFrameView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialFrameView.xaml + /// + public partial class MaterialFrameView : DemoView + { + public MaterialFrameView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialListBoxView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialListBoxView.xaml new file mode 100644 index 00000000..8944253c --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialListBoxView.xaml @@ -0,0 +1,50 @@ + + + + + + MaterialListBox is a ListBox that is using the Material Brushes and contains MaterialListBoxItems. + + MaterialListBoxItems are ListBoxItems that are using the Material Brushes. They use an ink animation when they are selected. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialListBoxView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialListBoxView.xaml.cs new file mode 100644 index 00000000..32607eee --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialListBoxView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialListBoxView.xaml + /// + public partial class MaterialListBoxView : MaterialDemoView + { + public MaterialListBoxView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarCircularView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarCircularView.xaml new file mode 100644 index 00000000..69dc85e6 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarCircularView.xaml @@ -0,0 +1,60 @@ + + + + + + A circular ProgressBar that uses the Material Brushes. It contains properties to animate the indeterminate state. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarCircularView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarCircularView.xaml.cs new file mode 100644 index 00000000..a075d65d --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarCircularView.xaml.cs @@ -0,0 +1,50 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media.Animation; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialProgressBarCircularView.xaml + /// + public partial class MaterialProgressBarCircularView : MaterialDemoView + { + #region Constructors + + public MaterialProgressBarCircularView() + { + InitializeComponent(); + + } + + #endregion + + + + + + + + + + + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarView.xaml new file mode 100644 index 00000000..58c75e26 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarView.xaml @@ -0,0 +1,57 @@ + + + + + + A linear ProgressBar that uses the Material Brushes. It contains properties to animate the indeterminate state. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarView.xaml.cs new file mode 100644 index 00000000..2a6742b0 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialProgressBarView.xaml.cs @@ -0,0 +1,50 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media.Animation; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialProgressBarView.xaml + /// + public partial class MaterialProgressBarView : MaterialDemoView + { + #region Constructors + + public MaterialProgressBarView() + { + InitializeComponent(); + } + + #endregion + + + + + + + + + + + + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialRadioButtonView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialRadioButtonView.xaml new file mode 100644 index 00000000..f0e5bf54 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialRadioButtonView.xaml @@ -0,0 +1,46 @@ + + + + + + A RadioButton with transition animations when the checked state is changed. It uses the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialRadioButtonView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialRadioButtonView.xaml.cs new file mode 100644 index 00000000..66da1b65 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialRadioButtonView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialRadioButtonView.xaml + /// + public partial class MaterialRadioButtonView : MaterialDemoView + { + public MaterialRadioButtonView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSliderView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSliderView.xaml new file mode 100644 index 00000000..4085cdfe --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSliderView.xaml @@ -0,0 +1,63 @@ + + + + + + A Slider with customizable and animated thumb and bubble that is using the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSliderView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSliderView.xaml.cs new file mode 100644 index 00000000..f2761853 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSliderView.xaml.cs @@ -0,0 +1,37 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using Xceed.Wpf.Toolkit.Panels; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialSliderView.xaml + /// + public partial class MaterialSliderView : MaterialDemoView + { + public MaterialSliderView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSwitchView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSwitchView.xaml new file mode 100644 index 00000000..ff0ec175 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSwitchView.xaml @@ -0,0 +1,48 @@ + + + + + + A ToggleSwitch from the Xceed WPF Toolkit with thumb animations when Checked state is changed and that is using the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSwitchView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSwitchView.xaml.cs new file mode 100644 index 00000000..c67fd0c9 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialSwitchView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialSwitchView.xaml + /// + public partial class MaterialSwitchView : MaterialDemoView + { + public MaterialSwitchView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTabsView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTabsView.xaml new file mode 100644 index 00000000..4f412065 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTabsView.xaml @@ -0,0 +1,57 @@ + + + + + + MaterialTabControl is a a TabControl with animated transitions when the current selection is changed. Is is using the Material Brushes and contains MaterialTabItems. + + MaterialTabItems are TabItems that are using the Material Brushes and who contains customizable ink animations on mouse press. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTabsView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTabsView.xaml.cs new file mode 100644 index 00000000..99d9e76c --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTabsView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialTabsView.xaml + /// + public partial class MaterialTabsView : MaterialDemoView + { + public MaterialTabsView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTextFieldView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTextFieldView.xaml new file mode 100644 index 00000000..bcd180f6 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTextFieldView.xaml @@ -0,0 +1,56 @@ + + + + + + A TextBox containing a customizable animated watermark that remains active when text is entered. It uses the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTextFieldView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTextFieldView.xaml.cs new file mode 100644 index 00000000..53cba58a --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialTextFieldView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialTextFieldView.xaml + /// + public partial class MaterialTextFieldView : MaterialDemoView + { + public MaterialTextFieldView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToastView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToastView.xaml new file mode 100644 index 00000000..e27f271f --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToastView.xaml @@ -0,0 +1,55 @@ + + + + + + A ContentControl that can be customized to display a content in any corner of any window or FrameworkElement. It is using the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToastView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToastView.xaml.cs new file mode 100644 index 00000000..f1427296 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToastView.xaml.cs @@ -0,0 +1,38 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using Xceed.Wpf.Toolkit.Panels; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialToastView.xaml + /// + public partial class MaterialToastView : MaterialDemoView + { + public MaterialToastView() + { + InitializeComponent(); + } + + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToolTipView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToolTipView.xaml new file mode 100644 index 00000000..81e48d72 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToolTipView.xaml @@ -0,0 +1,52 @@ + + + + + + A ToolTip with animations when opening. It is using the Material Brushes. + + + This feature is only available in the "Plus" version. + + + Click here for more details about Xceed Extended WPF Toolkit Plus. + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToolTipView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToolTipView.xaml.cs new file mode 100644 index 00000000..fe3e0ef6 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/MaterialControls/Views/MaterialToolTipView.xaml.cs @@ -0,0 +1,34 @@ +/************************************************************************************** + + Extended WPF Toolkit + + Copyright (C) 2007-2015 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + **************************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views +{ + /// + /// Interaction logic for MaterialToolTipView.xaml + /// + public partial class MaterialToolTipView : MaterialDemoView + { + public MaterialToolTipView() + { + InitializeComponent(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/PropertyGrid/Views/PropertyGridAttributesView.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/PropertyGrid/Views/PropertyGridAttributesView.xaml.cs index e60091a8..a55a1d20 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/PropertyGrid/Views/PropertyGridAttributesView.xaml.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/PropertyGrid/Views/PropertyGridAttributesView.xaml.cs @@ -52,7 +52,7 @@ namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.PropertyGrid.Views [CategoryOrder("Information", 0)] [CategoryOrder( "Conections", 1 )] [CategoryOrder( "Other", 2 )] - public abstract class Person + public abstract class Person : INotifyPropertyChanged { // All properties have their own "[Category(...)]" attribute to specify which category they // belong to when the "Categorized" layout is used by the PropertyGrid. @@ -65,12 +65,22 @@ namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.PropertyGrid.Views [Category( "Information" )] [Description( "This property uses the [Editor(..)] attribute to provide a custom editor using the 'FirstNameEditor' class. In the Plus version, it also depends on the IsMale property to change its foreground and source." )] [Editor( typeof( FirstNameEditor ), typeof( FirstNameEditor ) )] - public string FirstName { get; set; } + public string FirstName + { + get{ return _firstName; } + set{ _firstName = value; OnPropertyChanged( "FirstName" );} + } + private string _firstName; [Category( "Information" )] [Description( "This property uses the [Editor(..)] attribute to provide a custom editor using the 'LastNameUserControlEditor' user control." )] [Editor( typeof( LastNameUserControlEditor ), typeof( LastNameUserControlEditor ) )] - public string LastName { get; set; } + public string LastName + { + get{ return _lastName; } + set{ _lastName = value; OnPropertyChanged( "LastName" );} + } + private string _lastName; [Category( "Conections" )] [Description( "This property uses the [NewItemTypes(...)] attribute to provide the underlying CollectionEditor with class types (eg. Man, Woman) that can be inserted in the collection." )] @@ -81,6 +91,7 @@ namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.PropertyGrid.Views [DisplayName( "Writing Font Size" )] [Description( "This property defines the [ItemsSource(..)] attribute that allows you to specify a ComboBox editor and control its items." )] [ItemsSource( typeof( FontSizeItemsSource ) )] + [RefreshProperties( RefreshProperties.All )] //This will reload the PropertyGrid public double WritingFontSize { get; set; } [Category( "Conections" )] @@ -116,6 +127,15 @@ namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.PropertyGrid.Views { return FirstName + " " + LastName; } + + public event PropertyChangedEventHandler PropertyChanged; + protected void OnPropertyChanged( string propertyName ) + { + if( PropertyChanged != null ) + { + PropertyChanged( this, new PropertyChangedEventArgs( propertyName ) ); + } + } } // The "Man" and "Woman" classes are referenced by the "NewItemTypesAttribute" diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/PropertyGrid/Views/PropertyGridView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/PropertyGrid/Views/PropertyGridView.xaml index e17dbcc3..bc7a4288 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/PropertyGrid/Views/PropertyGridView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/PropertyGrid/Views/PropertyGridView.xaml @@ -47,6 +47,7 @@ + @@ -138,7 +139,17 @@ VerticalAlignment="Center" Margin="5" ToolTip="Update the source of a TextBox when True and Enter key is pressed." /> - + + @@ -175,6 +186,7 @@ UpdateTextBoxSourceOnEnterKey="True" IsMiscCategoryLabelHidden="False" ShowPreview="True" + HideInheritedProperties="False" SelectedObject="{Binding ElementName=_button}"> diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/WatermarkTextboxView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/WatermarkTextboxView.xaml index b185c20e..db4921a5 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/WatermarkTextboxView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/WatermarkTextboxView.xaml @@ -14,42 +14,81 @@ ***********************************************************************************--> - - - The WatermarkTextBox is simply a TextBox that allows you to sepcify an object, usually a String, to represent null or missing text. - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:local="clr-namespace:Xceed.Wpf.Toolkit.LiveExplorer" + xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" + Title="WatermarkTextBox"> + + + The WatermarkTextBox is simply a TextBox that allows you to sepcify an object, usually a String, to represent null or missing text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/ToggleSwitch/Converters/ZeroToBoolConverter.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/ToggleSwitch/Converters/ZeroToBoolConverter.cs new file mode 100644 index 00000000..0c9d80a5 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/ToggleSwitch/Converters/ZeroToBoolConverter.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Windows.Data; + +namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.ToggleSwitch.Converters +{ + public class ZeroToBoolConverter : IValueConverter + { + public object Convert( object value, Type targetType, object parameter, CultureInfo culture ) + { + if( value == null ) + return false; + + double number = 0d; + + try + { + number = System.Convert.ToDouble( value ); + } + catch + { + return false; + } + + return number == 0d; + } + + public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture ) + { + throw new NotImplementedException(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/ToggleSwitch/Resources/PencilTool16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/ToggleSwitch/Resources/PencilTool16.png new file mode 100644 index 0000000000000000000000000000000000000000..df0970c4085fd0014dc6d5e7b81d3b02d8b25482 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!H=FUjv*HQdnYX{I&8qx_F1E`xv@1(dUayt z8Mf?go7nn}ZdlWlEUa@z`Gp`4H|yztnmf5ABHz5tQ!~5p-CMohH@NcHK5;I&IYL?& zm;JQ)rZb(z(se?4LbZ5%jC*rFOQpPmp+c$bq2OpSgTt$Yi_`>+e>|ApaPZw(PO%^7 z0#s8v6O3*w>)6fr_w~-dh6fU&63+@2ZGIXn^T+!)cf~Jvi(2X3n?BEf;Q0RXrnjky zrgQuApDRAk*&va#?COEf_Ck^2p$`^{8O(gX@6GBkPA3D?^y97v @@ -55,6 +56,9 @@ + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Xceed.Wpf.Toolkit.LiveExplorer.csproj b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Xceed.Wpf.Toolkit.LiveExplorer.csproj index 2f2abdac..da382d84 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Xceed.Wpf.Toolkit.LiveExplorer.csproj +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Xceed.Wpf.Toolkit.LiveExplorer.csproj @@ -201,6 +201,57 @@ MagnifierView.xaml + + + + MaterialComboBoxView.xaml + + + + MaterialListBoxView.xaml + + + MaterialToolTipView.xaml + + + MaterialDropDownView.xaml + + + MaterialSwitchView.xaml + + + MaterialFrameView.xaml + + + MaterialTabsView.xaml + + + MaterialProgressBarCircularView.xaml + + + MaterialProgressBarView.xaml + + + MaterialRadioButtonView.xaml + + + MaterialCheckBoxView.xaml + + + MaterialToastView.xaml + + + MaterialSliderView.xaml + + + MaterialTextFieldView.xaml + + + MaterialButtonView.xaml + + + MaterialControlsView.xaml + NumericView.xaml @@ -325,6 +376,7 @@ TimeSpanView.xaml + ToggleSwitchView.xaml @@ -493,6 +545,74 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -1118,6 +1238,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs index 5d0a8f10..a2dee8ce 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs @@ -21,7 +21,7 @@ internal static class _XceedVersionInfo { [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )] - public const string BaseVersion = "2.6"; + public const string BaseVersion = "2.7"; [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )] public const string Version = BaseVersion + ".0.0"; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Implementation/Calculator.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Implementation/Calculator.cs index 6100f6bf..29b52fcf 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Implementation/Calculator.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Implementation/Calculator.cs @@ -93,6 +93,24 @@ namespace Xceed.Wpf.Toolkit #region Properties + #region CalculatorButtonPanelTemplate + + public static readonly DependencyProperty CalculatorButtonPanelTemplateProperty = DependencyProperty.Register( "CalculatorButtonPanelTemplate" + , typeof( ControlTemplate ), typeof( Calculator ), new UIPropertyMetadata( null ) ); + public ControlTemplate CalculatorButtonPanelTemplate + { + get + { + return (ControlTemplate)GetValue( CalculatorButtonPanelTemplateProperty ); + } + set + { + SetValue( CalculatorButtonPanelTemplateProperty, value ); + } + } + + #endregion //CalculatorButtonPanelTemplate + #region CalculatorButtonType public static readonly DependencyProperty CalculatorButtonTypeProperty = DependencyProperty.RegisterAttached( "CalculatorButtonType", typeof( CalculatorButtonType ), typeof( Calculator ), new UIPropertyMetadata( CalculatorButtonType.None, OnCalculatorButtonTypeChanged ) ); @@ -112,7 +130,10 @@ namespace Xceed.Wpf.Toolkit { Button button = o as Button; button.CommandParameter = newValue; - button.Content = CalculatorUtilities.GetCalculatorButtonContent( newValue ); + if( button.Content == null ) + { + button.Content = CalculatorUtilities.GetCalculatorButtonContent( newValue ); + } } #endregion //CalculatorButtonType diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Aero2.NormalColor.xaml index 74f11f0e..9edea9e0 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Aero2.NormalColor.xaml @@ -243,7 +243,9 @@ Text="{Binding DisplayText, RelativeSource={RelativeSource TemplatedParent}}" /> - + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Generic.xaml index ad77bac2..278d13ac 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Generic.xaml @@ -776,7 +776,7 @@ diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Implementation/CheckComboBox.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Implementation/CheckComboBox.cs index 520e9f39..edb55d9f 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Implementation/CheckComboBox.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Implementation/CheckComboBox.cs @@ -35,6 +35,7 @@ namespace Xceed.Wpf.Toolkit #region Members private ValueChangeHelper _displayMemberPathValuesChangeHelper; + private bool _ignoreTextValueChanged; private Popup _popup; private List _initialValue = new List(); @@ -58,9 +59,28 @@ namespace Xceed.Wpf.Toolkit #region Properties + #region IsEditable + + public static readonly DependencyProperty IsEditableProperty = DependencyProperty.Register( "IsEditable", typeof( bool ), typeof( CheckComboBox ) + , new UIPropertyMetadata( false ) ); + public bool IsEditable + { + get + { + return (bool)GetValue( IsEditableProperty ); + } + set + { + SetValue( IsEditableProperty, value ); + } + } + + #endregion + #region Text - public static readonly DependencyProperty TextProperty = DependencyProperty.Register( "Text", typeof( string ), typeof( CheckComboBox ), new UIPropertyMetadata( null ) ); + public static readonly DependencyProperty TextProperty = DependencyProperty.Register( "Text", typeof( string ), typeof( CheckComboBox ) + , new UIPropertyMetadata( null, OnTextChanged ) ); public string Text { get @@ -73,6 +93,21 @@ namespace Xceed.Wpf.Toolkit } } + private static void OnTextChanged( DependencyObject o, DependencyPropertyChangedEventArgs e ) + { + var checkComboBox = o as CheckComboBox; + if( checkComboBox != null ) + checkComboBox.OnTextChanged( (string)e.OldValue, (string)e.NewValue ); + } + + protected virtual void OnTextChanged( string oldValue, string newValue ) + { + if( !this.IsInitialized || _ignoreTextValueChanged ) + return; + + this.UpdateFromText(); + } + #endregion #region IsDropDownOpen @@ -254,7 +289,26 @@ namespace Xceed.Wpf.Toolkit #endif if( String.IsNullOrEmpty( Text ) || !Text.Equals( newValue ) ) + { + _ignoreTextValueChanged = true; Text = newValue; + _ignoreTextValueChanged = false; + } + } + + /// + /// Updates the SelectedItems collection based on the content of + /// the Text property. + /// + private void UpdateFromText() + { + List selectedValues = null; + if( !String.IsNullOrEmpty( this.Text ) ) + { + selectedValues = this.Text.Replace( " ", string.Empty ).Split( new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries ).ToList(); + } + + this.UpdateFromList( selectedValues, this.GetItemDisplayValue ); } protected object GetItemDisplayValue( object item ) diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Aero2.NormalColor.xaml index 80082939..aa9fd8da 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Aero2.NormalColor.xaml @@ -21,20 +21,25 @@ xmlns:themes="clr-namespace:Xceed.Wpf.Toolkit.Themes" xmlns:chrome="clr-namespace:Xceed.Wpf.Toolkit.Chromes"> - + - M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z + M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Generic.xaml index c7d73f0c..970309b1 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Generic.xaml @@ -22,20 +22,26 @@ - + M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z - + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Generic.xaml index ae2f89a6..2930e304 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Generic.xaml @@ -60,7 +60,19 @@ - + + + + @@ -75,6 +87,12 @@ + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Core/Converters/HalfConverter.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Core/Converters/HalfConverter.cs index 97fa8a50..390da4cd 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Core/Converters/HalfConverter.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Core/Converters/HalfConverter.cs @@ -28,7 +28,7 @@ namespace Xceed.Wpf.Toolkit.Core.Converters public object Convert( object value, Type targetType, object parameter, CultureInfo culture ) { double size = ( double )value; - double modifier = double.Parse( ( string )parameter); + double modifier = (parameter != null) ? double.Parse( ( string )parameter ) : 0d; if( modifier != 0 ) return Math.Max(0, size - modifier) / 2; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DateTimeUpDown/Implementation/DateTimeUpDown.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DateTimeUpDown/Implementation/DateTimeUpDown.cs index 8cdbe198..99e05328 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DateTimeUpDown/Implementation/DateTimeUpDown.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DateTimeUpDown/Implementation/DateTimeUpDown.cs @@ -835,9 +835,25 @@ namespace Xceed.Wpf.Toolkit private bool TryParseDateTime( string text, out DateTime result ) { bool isValid = false; + result = this.ContextNow; - DateTime current = this.Value.HasValue ? this.Value.Value : DateTime.Parse( this.ContextNow.ToString(), this.CultureInfo.DateTimeFormat ); - isValid = DateTimeParser.TryParse( text, this.GetFormatString( Format ), current, this.CultureInfo, out result ); + DateTime current = this.ContextNow; + if( this.Value.HasValue ) + { + current = this.Value.Value; + } + else + { + try + { + current = DateTime.Parse( this.ContextNow.ToString(), this.CultureInfo.DateTimeFormat ); + isValid = DateTimeParser.TryParse( text, this.GetFormatString( Format ), current, this.CultureInfo, out result ); + } + catch( FormatException ) + { + isValid = false; + } + } if( !isValid ) { diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs index 96f6d106..9c0798ba 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs @@ -139,6 +139,36 @@ namespace Xceed.Wpf.Toolkit #endregion //IsOpen + #region MaxDropDownHeight + + public static readonly DependencyProperty MaxDropDownHeightProperty = DependencyProperty.Register( "MaxDropDownHeight", typeof( double ) + , typeof( DropDownButton ), new UIPropertyMetadata( SystemParameters.PrimaryScreenHeight / 2.0, OnMaxDropDownHeightChanged ) ); + public double MaxDropDownHeight + { + get + { + return (double)GetValue( MaxDropDownHeightProperty ); + } + set + { + SetValue( MaxDropDownHeightProperty, value ); + } + } + + private static void OnMaxDropDownHeightChanged( DependencyObject o, DependencyPropertyChangedEventArgs e ) + { + var dropDownButton = o as DropDownButton; + if( dropDownButton != null ) + dropDownButton.OnMaxDropDownHeightChanged( (double)e.OldValue, (double)e.NewValue ); + } + + protected virtual void OnMaxDropDownHeightChanged( double oldValue, double newValue ) + { + // TODO: Add your property changed side-effects. Descendants can override as well. + } + + #endregion + #endregion //Properties #region Base Class Overrides @@ -159,6 +189,15 @@ namespace Xceed.Wpf.Toolkit _popup.Opened += Popup_Opened; } + protected override void OnIsKeyboardFocusWithinChanged( DependencyPropertyChangedEventArgs e ) + { + base.OnIsKeyboardFocusWithinChanged( e ); + if( !( bool )e.NewValue ) + { + this.CloseDropDown( false ); + } + } + #endregion //Base Class Overrides #region Events diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Aero2.NormalColor.xaml index 828fa3b5..9f84846c 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Aero2.NormalColor.xaml @@ -21,63 +21,83 @@ xmlns:themes="clr-namespace:Xceed.Wpf.Toolkit.Themes" xmlns:local="clr-namespace:Xceed.Wpf.Toolkit"> - - - + + + - + - - - + + + - + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Generic.xaml index e90fdcc9..b7f755cc 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Generic.xaml @@ -125,9 +125,13 @@ IsOpen="{Binding IsChecked, ElementName=PART_DropDownButton}"> - + BorderBrush="{StaticResource PopupDarkBorderBrush}" + MaxHeight="{TemplateBinding MaxDropDownHeight}"> + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs index add955cc..25cad5ed 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs @@ -1344,7 +1344,18 @@ namespace Xceed.Wpf.Toolkit e.Handled = true; - this.ProcessTextInput( e.Text ); + if( this.CharacterCasing == CharacterCasing.Upper ) + { + this.ProcessTextInput( e.Text.ToUpper() ); + } + else if( this.CharacterCasing == CharacterCasing.Lower ) + { + this.ProcessTextInput( e.Text.ToLower() ); + } + else + { + this.ProcessTextInput( e.Text ); + } base.OnTextInput( e ); } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaterialControls/MaterialTabs/Implementation/Converters/TranslateSelectedTabItemConverter.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaterialControls/MaterialTabs/Implementation/Converters/TranslateSelectedTabItemConverter.cs new file mode 100644 index 00000000..b92ddcdf --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaterialControls/MaterialTabs/Implementation/Converters/TranslateSelectedTabItemConverter.cs @@ -0,0 +1,59 @@ +/************************************************************************************* + + Extended WPF Toolkit + + Copyright (C) 2007-2013 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + ***********************************************************************************/ + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Media; + +namespace Xceed.Wpf.Toolkit.Converters +{ + public class TranslateSelectedTabItemConverter : IMultiValueConverter + { + public object Convert( object[] values, Type targetType, object parameter, CultureInfo culture ) + { + double width = (double)values[0]; + double height = (double)values[1]; + Dock position = (Dock)values[2]; + + if( parameter.ToString().Equals( "Previous" ) ) + { + if( (position == Dock.Top) || (position == Dock.Bottom) ) + return new TranslateTransform( -width, 0 ); + else + return new TranslateTransform( 0, -height ); + } + else if( parameter.ToString().Equals( "Next" ) ) + { + if( (position == Dock.Top) || (position == Dock.Bottom) ) + return new TranslateTransform( width, 0 ); + else + return new TranslateTransform( 0, height ); + } + + return null; + } + + public object[] ConvertBack( object value, Type[] targetTypes, object parameter, CultureInfo culture ) + { + throw new NotImplementedException(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MessageBox/Implementation/MessageBox.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MessageBox/Implementation/MessageBox.cs index c7205d91..8c25d69c 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MessageBox/Implementation/MessageBox.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MessageBox/Implementation/MessageBox.cs @@ -26,6 +26,7 @@ using System.Security; using Xceed.Wpf.Toolkit.Primitives; using System.Diagnostics; using System.Windows.Media.Imaging; +using System.Windows.Threading; namespace Xceed.Wpf.Toolkit { @@ -767,6 +768,51 @@ namespace Xceed.Wpf.Toolkit return msgBox.MessageBoxResult; } + private delegate Window ComputeOwnerWindowCoreDelegate(); + + /// + /// Resolves the owner Window of the MessageBox. + /// + /// the owner Window + private static Window ComputeOwnerWindow() + { + Window result = null; + + if( Application.Current.Dispatcher.CheckAccess() ) + { + result = ComputeOwnerWindowCore(); + } + else + { + Application.Current.Dispatcher.BeginInvoke( new Action( () => + { + result = ComputeOwnerWindowCore(); + } + ) ); + } + + return result; + } + + private static Window ComputeOwnerWindowCore() + { + Window owner = null; + + if( Application.Current != null ) + { + foreach( Window w in Application.Current.Windows ) + { + if( w.IsActive ) + { + owner = w; + break; + } + } + } + + return owner; + } + /// /// Sets the message image source. /// @@ -818,6 +864,7 @@ namespace Xceed.Wpf.Toolkit newWindow.AllowsTransparency = true; newWindow.Background = Brushes.Transparent; newWindow.Content = this; + newWindow.Owner = _owner ?? ComputeOwnerWindow(); if( newWindow.Owner != null ) newWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs index 11f25f99..a6fd9058 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs @@ -462,6 +462,35 @@ namespace Xceed.Wpf.Toolkit.Primitives return value; } + internal void UpdateFromList( List selectedValues, Func GetItemfunction ) + { + _ignoreSelectedItemsCollectionChanged++; + // Just update the SelectedItems collection content + // and let the synchronization be made from UpdateFromSelectedItems(); + SelectedItems.Clear(); + + if( (selectedValues != null) && (selectedValues.Count > 0) ) + { + ValueEqualityComparer comparer = new ValueEqualityComparer(); + + foreach( object item in ItemsCollection ) + { + object itemValue = GetItemfunction( item ); + + bool isSelected = (itemValue != null) + && selectedValues.Contains( itemValue.ToString(), comparer ); + + if( isSelected ) + { + SelectedItems.Add( item ); + } + } + } + _ignoreSelectedItemsCollectionChanged--; + + this.UpdateFromSelectedItems(); + } + private bool? GetSelectedMemberPathValue( object item ) { PropertyInfo prop = this.GetSelectedMemberPathProperty(item); @@ -734,32 +763,13 @@ namespace Xceed.Wpf.Toolkit.Primitives /// private void UpdateFromSelectedValue() { - _ignoreSelectedItemsCollectionChanged++; - // Just update the SelectedItems collection content - // and let the synchronization be made from UpdateFromSelectedItems(); - SelectedItems.Clear(); - + List selectedValues = null; if( !String.IsNullOrEmpty( SelectedValue ) ) { - List selectedValues = SelectedValue.Split( new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries ).ToList(); - ValueEqualityComparer comparer = new ValueEqualityComparer(); - - foreach( object item in ItemsCollection ) - { - object itemValue = this.GetItemValue( item ); - - bool isSelected = ( itemValue != null ) - && selectedValues.Contains( itemValue.ToString(), comparer ); - - if( isSelected ) - { - SelectedItems.Add( item ); - } - } + selectedValues = SelectedValue.Split( new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries ).ToList(); } - _ignoreSelectedItemsCollectionChanged--; - this.UpdateFromSelectedItems(); + this.UpdateFromList( selectedValues, this.GetItemValue ); } #endregion //Methods diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Aero2/SelectorItem.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Aero2/SelectorItem.xaml index ac210dbb..ecfdaddf 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Aero2/SelectorItem.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Aero2/SelectorItem.xaml @@ -39,14 +39,18 @@ Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> - + + VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Generic/SelectorItem.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Generic/SelectorItem.xaml index 1c643794..970e66e3 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Generic/SelectorItem.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Generic/SelectorItem.xaml @@ -40,14 +40,18 @@ Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> - + + VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/ValueRangeTextBox.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/ValueRangeTextBox.cs index dee26a93..7bc15cc9 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/ValueRangeTextBox.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Primitives/ValueRangeTextBox.cs @@ -1100,7 +1100,7 @@ namespace Xceed.Wpf.Toolkit.Primitives if( ( ( value != null ) && ( value != DBNull.Value ) ) && ( value.GetType() != type ) ) { - return System.Convert.ChangeType( value, type, CultureInfo.InvariantCulture ); + return ChangeTypeHelper.ChangeType( value, type, CultureInfo.InvariantCulture ); } return value; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ContainerHelperBase.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ContainerHelperBase.cs index a3c66bc5..d73a925f 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ContainerHelperBase.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ContainerHelperBase.cs @@ -149,6 +149,10 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid { this.OnAutoGeneratePropertiesChanged(); } + else if( propertyName == ReflectionHelper.GetPropertyOrFieldName( () => ps.HideInheritedProperties ) ) + { + this.OnHideInheritedPropertiesChanged(); + } else if(propertyName == ReflectionHelper.GetPropertyOrFieldName( () => ps.EditorDefinitions )) { this.OnEditorDefinitionsChanged(); @@ -165,6 +169,8 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid protected virtual void OnAutoGeneratePropertiesChanged() { } + protected virtual void OnHideInheritedPropertiesChanged() { } + protected virtual void OnEditorDefinitionsChanged() { } protected virtual void OnPropertyDefinitionsChanged() { } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Converters/IsDefaultCategoryConverter.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Converters/IsDefaultCategoryConverter.cs new file mode 100644 index 00000000..548c706f --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Converters/IsDefaultCategoryConverter.cs @@ -0,0 +1,45 @@ +/************************************************************************************* + + Extended WPF Toolkit + + Copyright (C) 2007-2013 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + ***********************************************************************************/ + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Windows.Data; + +namespace Xceed.Wpf.Toolkit.PropertyGrid.Converters +{ + public class IsDefaultCategoryConverter : IValueConverter + { + public object Convert( object value, Type targetType, object parameter, CultureInfo culture ) + { + string categoryName = value as string; + if( categoryName != null ) + { + return ( categoryName == CategoryAttribute.Default.Category ); + } + + return false; + } + + public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture ) + { + throw new NotImplementedException(); + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CustomPropertyItem.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CustomPropertyItem.cs index 302c4880..b49c9bc9 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CustomPropertyItem.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CustomPropertyItem.cs @@ -32,13 +32,20 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid /// public class CustomPropertyItem : PropertyItemBase { + #region Constructors + internal CustomPropertyItem() { } - internal CustomPropertyItem( bool isPropertyGridCategorized ) + internal CustomPropertyItem( bool isPropertyGridCategorized, bool isSortedAlphabetically ) { _isPropertyGridCategorized = isPropertyGridCategorized; + _isSortedAlphabetically = isSortedAlphabetically; } + #endregion + + #region Properties + #region Category public static readonly DependencyProperty CategoryProperty = @@ -145,5 +152,20 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } #endregion //Value + + #endregion + + #region Overrides + + protected override void OnEditorChanged( FrameworkElement oldValue, FrameworkElement newValue ) + { + if( oldValue != null ) + oldValue.DataContext = null; + + if( newValue != null ) + newValue.DataContext = this; + } + + #endregion } } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Editors/PrimitiveTypeCollectionEditor.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Editors/PrimitiveTypeCollectionEditor.cs index da8ff71a..07540dc6 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Editors/PrimitiveTypeCollectionEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Editors/PrimitiveTypeCollectionEditor.cs @@ -15,6 +15,7 @@ ***********************************************************************************/ using System.Windows; +using Xceed.Wpf.Toolkit.Core.Utilities; namespace Xceed.Wpf.Toolkit.PropertyGrid.Editors { public class PrimitiveTypeCollectionEditor : TypeEditor @@ -39,13 +40,9 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid.Editors { Editor.ItemType = type.GetElementType(); } - else if( type.IsGenericType ) + else { - var typeArguments = type.GetGenericArguments(); - if( typeArguments.Length > 0 ) - { - Editor.ItemType = typeArguments[ 0 ]; - } + Editor.ItemType = ListUtilities.GetListItemType( type ); } base.ResolveValueBinding( propertyItem ); diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/IPropertyContainer.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/IPropertyContainer.cs index 358f35f8..465ff068 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/IPropertyContainer.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/IPropertyContainer.cs @@ -42,8 +42,12 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid bool IsCategorized { get; } + bool IsSortedAlphabetically { get; } + bool AutoGenerateProperties { get; } + bool HideInheritedProperties { get; } + FilterInfo FilterInfo { get; } } } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelper.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelper.cs index 89ae7149..15e83471 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelper.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelper.cs @@ -55,7 +55,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid { try { - List descriptors = ObjectContainerHelperBase.GetPropertyDescriptors( SelectedObject ); + List descriptors = ObjectContainerHelperBase.GetPropertyDescriptors( SelectedObject, this.PropertyContainer.HideInheritedProperties ); foreach( var descriptor in descriptors ) { var propertyDef = this.GetPropertyDefinition( descriptor ); @@ -96,6 +96,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid Debug.Assert( SelectedObject != null ); propertyItem.Instance = SelectedObject; propertyItem.CategoryOrder = this.GetCategoryOrder( definition.CategoryValue ); + propertyItem.WillRefreshPropertyGrid = this.GetWillRefreshPropertyGrid( property ); return propertyItem; } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelperBase.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelperBase.cs index 49b66b8a..16106b33 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelperBase.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelperBase.cs @@ -145,6 +145,11 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid this.RegenerateProperties(); } + protected override void OnHideInheritedPropertiesChanged() + { + this.RegenerateProperties(); + } + protected override void OnEditorDefinitionsChanged() { this.RegenerateProperties(); @@ -167,7 +172,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid private void UpdateCategorization( bool updateSubPropertiesCategorization ) { - _propertyItemCollection.UpdateCategorization( this.ComputeCategoryGroupDescription(), this.PropertyContainer.IsCategorized ); + _propertyItemCollection.UpdateCategorization( this.ComputeCategoryGroupDescription(), this.PropertyContainer.IsCategorized, this.PropertyContainer.IsSortedAlphabetically ); if( updateSubPropertiesCategorization && (_propertyItemCollection.Count > 0) ) { foreach( PropertyItem propertyItem in _propertyItemCollection ) @@ -175,7 +180,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid PropertyItemCollection subPropertyItemsCollection = propertyItem.Properties as PropertyItemCollection; if( subPropertyItemsCollection != null ) { - subPropertyItemsCollection.UpdateCategorization( this.ComputeCategoryGroupDescription(), this.PropertyContainer.IsCategorized ); + subPropertyItemsCollection.UpdateCategorization( this.ComputeCategoryGroupDescription(), this.PropertyContainer.IsCategorized, this.PropertyContainer.IsSortedAlphabetically ); } } } @@ -245,7 +250,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } } - protected static List GetPropertyDescriptors( object instance ) + protected static List GetPropertyDescriptors( object instance, bool hideInheritedProperties ) { PropertyDescriptorCollection descriptors; @@ -262,14 +267,40 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid descriptors = tc.GetProperties( instance ); } - return ( descriptors != null ) - ? descriptors.Cast().ToList() - : null; + if( ( descriptors != null ) ) + { + var descriptorsProperties = descriptors.Cast(); + if( hideInheritedProperties ) + { + var properties = from p in descriptorsProperties + where p.ComponentType == instance.GetType() + select p; + return properties.ToList(); + } + else + { + return descriptorsProperties.ToList(); + } + } + + return null; } + protected bool GetWillRefreshPropertyGrid( PropertyDescriptor propertyDescriptor ) + { + if( propertyDescriptor == null ) + return false; + + var attribute = PropertyGridUtilities.GetAttribute( propertyDescriptor ); + if( attribute != null ) + return attribute.RefreshProperties != RefreshProperties.None; + + return false; + } + internal void InitializeDescriptorDefinition( DescriptorPropertyDefinitionBase descriptorDef, PropertyDefinition propertyDefinition ) diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyGrid.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyGrid.cs index d2a1c6cf..cf937524 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyGrid.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyGrid.cs @@ -213,6 +213,23 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid #endregion //FilterWatermark + #region HideInheritedProperties + + public static readonly DependencyProperty HideInheritedPropertiesProperty = DependencyProperty.Register( "HideInheritedProperties", typeof( bool ), typeof( PropertyGrid ), new UIPropertyMetadata( false ) ); + public bool HideInheritedProperties + { + get + { + return ( bool )GetValue( HideInheritedPropertiesProperty ); + } + set + { + SetValue( HideInheritedPropertiesProperty, value ); + } + } + + #endregion //HideInheritedProperties + #region IsCategorized public static readonly DependencyProperty IsCategorizedProperty = DependencyProperty.Register( "IsCategorized", typeof( bool ), typeof( PropertyGrid ), new UIPropertyMetadata( true, OnIsCategorizedChanged ) ); @@ -748,6 +765,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid UpdateContainerHelper(); EditorDefinitions = new EditorDefinitionCollection(); PropertyDefinitions = new PropertyDefinitionCollection(); + this.PropertyValueChanged += this.PropertyGrid_PropertyValueChanged; AddHandler( PropertyItemBase.ItemSelectionChangedEvent, new RoutedEventHandler( OnItemSelectionChanged ) ); AddHandler( PropertyItemsControl.PreparePropertyItemEvent, new PropertyItemEventHandler( OnPreparePropertyItemInternal ) ); @@ -852,6 +870,24 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } + private void PropertyGrid_PropertyValueChanged( object sender, PropertyValueChangedEventArgs e ) + { + var modifiedPropertyItem = e.OriginalSource as PropertyItem; + if( modifiedPropertyItem != null ) + { + if( modifiedPropertyItem.WillRefreshPropertyGrid ) + this.UpdateContainerHelper(); + + var parentPropertyItem = modifiedPropertyItem.ParentNode as PropertyItem; + if( ( parentPropertyItem != null ) && parentPropertyItem.IsExpandable ) + { + //Rebuild Editor for parent propertyItem if one of its sub-propertyItem have changed. + this.RebuildEditor( parentPropertyItem ); + } + } + } + + #endregion //Event Handlers #region Commands @@ -870,6 +906,30 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid #region Methods + + + + + + + + + + + + private void RebuildEditor( PropertyItem propertyItem ) + { + ObjectContainerHelperBase objectContainerHelperBase = propertyItem.ContainerHelper as ObjectContainerHelperBase; + //Re-build the editor to update this propertyItem + FrameworkElement editor = objectContainerHelperBase.GenerateChildrenEditorElement( propertyItem ); + if( editor != null ) + { + // Tag the editor as generated to know if we should clear it. + ContainerHelperBase.SetIsGenerated( editor, true ); + propertyItem.Editor = editor; + } + } + private void UpdateContainerHelper() { // Keep a backup of the template element and initialize the @@ -952,6 +1012,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid + #endregion //Methods #region Events @@ -1164,6 +1225,14 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } } + bool IPropertyContainer.IsSortedAlphabetically + { + get + { + return true; + } + } + #endregion diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs index 63263553..8e400e45 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs @@ -126,21 +126,23 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } } - protected override void OnEditorChanged( FrameworkElement oldValue, FrameworkElement newValue ) + protected override object OnCoerceValueChanged( object baseValue ) { - if( oldValue != null ) - oldValue.DataContext = null; + // Propagate error from DescriptorPropertyDefinitionBase to PropertyItem.Value + // to see the red error rectangle in the propertyGrid. + BindingExpression be = this.GetBindingExpression( PropertyItem.ValueProperty ); + this.SetRedInvalidBorder( be ); + return baseValue; + } - if( newValue != null ) - newValue.DataContext = this; + protected override void OnValueChanged( object oldValue, object newValue ) + { + base.OnValueChanged( oldValue, newValue ); } - protected override object OnCoerceValueChanged( object baseValue ) + internal void SetRedInvalidBorder( BindingExpression be ) { - // Propagate error from DescriptorPropertyDefinitionBase to PropertyItem.Value - // to see the red error rectangle in the propertyGrid. - BindingExpression be = GetBindingExpression( PropertyItem.ValueProperty ); - if( ( be != null ) && be.DataItem is DescriptorPropertyDefinitionBase ) + if( (be != null) && be.DataItem is DescriptorPropertyDefinitionBase ) { DescriptorPropertyDefinitionBase descriptor = be.DataItem as DescriptorPropertyDefinitionBase; if( Validation.GetHasError( descriptor ) ) @@ -149,12 +151,6 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid Validation.MarkInvalid( be, errors[ 0 ] ); } } - return baseValue; - } - - protected override void OnValueChanged( object oldValue, object newValue ) - { - base.OnValueChanged( oldValue, newValue ); } private void OnDefinitionContainerHelperInvalidated( object sender, EventArgs e ) @@ -172,7 +168,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid #region Constructors internal PropertyItem( DescriptorPropertyDefinitionBase definition ) - : base( definition.IsPropertyGridCategorized ) + : base( definition.IsPropertyGridCategorized, !definition.PropertyType.IsArray ) { if( definition == null ) throw new ArgumentNullException( "definition" ); diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemBase.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemBase.cs index 049b5c9f..10e6d317 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemBase.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemBase.cs @@ -41,6 +41,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid private ContainerHelperBase _containerHelper; private IPropertyContainer _parentNode; internal bool _isPropertyGridCategorized; + internal bool _isSortedAlphabetically = true; #region Properties @@ -118,7 +119,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid private static void OnEditorChanged( DependencyObject o, DependencyPropertyChangedEventArgs e ) { - PropertyItem propertyItem = o as PropertyItem; + PropertyItemBase propertyItem = o as PropertyItemBase; if( propertyItem != null ) propertyItem.OnEditorChanged( ( FrameworkElement )e.OldValue, ( FrameworkElement )e.NewValue ); } @@ -298,6 +299,25 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid #endregion + #region WillRefreshPropertyGrid + + public static readonly DependencyProperty WillRefreshPropertyGridProperty = + DependencyProperty.Register( "WillRefreshPropertyGrid", typeof( bool ), typeof( PropertyItemBase ), new UIPropertyMetadata( false ) ); + + public bool WillRefreshPropertyGrid + { + get + { + return ( bool )GetValue( WillRefreshPropertyGridProperty ); + } + set + { + SetValue( WillRefreshPropertyGridProperty, value ); + } + } + + #endregion //WillRefreshPropertyGrid + #endregion //Properties #region Events @@ -425,7 +445,10 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid EditorDefinitionCollection IPropertyContainer.EditorDefinitions { - get { return ParentNode.EditorDefinitions; } + get + { + return (this.ParentNode != null) ? this.ParentNode.EditorDefinitions : null; + } } PropertyDefinitionCollection IPropertyContainer.PropertyDefinitions @@ -449,11 +472,27 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } } + bool IPropertyContainer.IsSortedAlphabetically + { + get + { + return _isSortedAlphabetically; + } + } + bool IPropertyContainer.AutoGenerateProperties { get { return true; } } + bool IPropertyContainer.HideInheritedProperties + { + get + { + return false; + } + } + FilterInfo IPropertyContainer.FilterInfo { get { return new FilterInfo(); } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemCollection.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemCollection.cs index 955b7cd4..30f87609 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemCollection.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemCollection.cs @@ -107,7 +107,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid OnCollectionChanged( new NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction.Reset ) ); } - internal void UpdateCategorization( GroupDescription groupDescription, bool isPropertyGridCategorized ) + internal void UpdateCategorization( GroupDescription groupDescription, bool isPropertyGridCategorized, bool sortAlphabetically ) { // Compute Display Order relative to PropertyOrderAttributes on PropertyItem // which could be different in Alphabetical or Categorized mode. @@ -133,7 +133,10 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } SortBy( PropertyOrderPropertyName, ListSortDirection.Ascending ); - SortBy( DisplayNamePropertyName, ListSortDirection.Ascending ); + if( sortAlphabetically ) + { + SortBy( DisplayNamePropertyName, ListSortDirection.Ascending ); + } } } @@ -153,7 +156,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid var property = item as PropertyItem; if( property.DisplayName != null ) { - return property.DisplayName.ToLower().StartsWith( text.ToLower() ); + return property.DisplayName.ToLower().Contains( text.ToLower() ); } return false; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Aero2.NormalColor.xaml index 40922420..bc485ad2 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Aero2.NormalColor.xaml @@ -46,6 +46,7 @@ + @@ -523,11 +524,10 @@ - - - True - + @@ -538,8 +538,8 @@ - + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Generic.xaml index 1a2f8599..9378a0fa 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Generic.xaml @@ -44,6 +44,7 @@ + @@ -858,11 +859,10 @@ - - - True - + @@ -872,8 +872,8 @@ - + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBar.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBar.cs index 8edd7501..669a4e43 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBar.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBar.cs @@ -261,7 +261,11 @@ namespace Xceed.Wpf.Toolkit { currentValue = Target.Selection.GetPropertyValue( formattingProperty ); } - button.IsChecked = ( ( currentValue == null ) || ( currentValue == DependencyProperty.UnsetValue ) ) + + if( currentValue == DependencyProperty.UnsetValue ) + return; + + button.IsChecked = ( currentValue == null ) ? false : currentValue != null && currentValue.Equals( expectedValue ); } @@ -273,7 +277,11 @@ namespace Xceed.Wpf.Toolkit { value = Target.Selection.GetPropertyValue( TextElement.FontFamilyProperty ); } - FontFamily currentFontFamily = ( FontFamily )( ( ( value == null ) || ( value == DependencyProperty.UnsetValue ) ) ? null : value ); + + if( value == DependencyProperty.UnsetValue ) + return; + + FontFamily currentFontFamily = ( FontFamily )value; if( currentFontFamily != null ) { _cmbFontFamilies.SelectedItem = currentFontFamily; @@ -288,7 +296,10 @@ namespace Xceed.Wpf.Toolkit value = Target.Selection.GetPropertyValue( TextElement.FontSizeProperty ); } - _cmbFontSizes.SelectedValue = ( ( value == null ) || ( value == DependencyProperty.UnsetValue ) ) ? null : value; + if( value == DependencyProperty.UnsetValue ) + return; + + _cmbFontSizes.SelectedValue = value; } private void UpdateFontColor() @@ -299,7 +310,10 @@ namespace Xceed.Wpf.Toolkit value = Target.Selection.GetPropertyValue( TextElement.ForegroundProperty ); } - Color? currentColor = ( ( value == null ) || ( value == DependencyProperty.UnsetValue ) + if( value == DependencyProperty.UnsetValue ) + return; + + Color? currentColor = ( ( value == null ) ? null : ( Color? )( ( SolidColorBrush )value ).Color ); _cmbFontColor.SelectedColor = currentColor; @@ -312,7 +326,11 @@ namespace Xceed.Wpf.Toolkit { value = Target.Selection.GetPropertyValue( TextElement.BackgroundProperty ); } - Color? currentColor = ( ( value == null ) || ( value == DependencyProperty.UnsetValue ) + + if( value == DependencyProperty.UnsetValue ) + return; + + Color? currentColor = ( ( value == null ) ? null : ( Color? )( ( SolidColorBrush )value ).Color ); _cmbFontBackgroundColor.SelectedColor = currentColor; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Aero2.NormalColor.xaml index 5dd13f4a..bed8d150 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Aero2.NormalColor.xaml @@ -21,83 +21,109 @@ xmlns:themes="clr-namespace:Xceed.Wpf.Toolkit.Themes" xmlns:conv="clr-namespace:Xceed.Wpf.Toolkit.Core.Converters"> - - - + + + - + - - - + + + - + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Generic.xaml index 0acaafd7..ebec726c 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Generic.xaml @@ -158,9 +158,13 @@ - + BorderBrush="{StaticResource ColorPickerDarkBorderBrush}" + MaxHeight="{TemplateBinding MaxDropDownHeight}"> + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Aero/Brushes_NormalColor.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Aero/Brushes_NormalColor.xaml index a3e85993..61e2a4a9 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Aero/Brushes_NormalColor.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Aero/Brushes_NormalColor.xaml @@ -66,8 +66,8 @@ - - + + @@ -78,8 +78,8 @@ - - + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Aero2.NormalColor.xaml index 5d23bd44..d97f65d1 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Aero2.NormalColor.xaml @@ -17,47 +17,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Implementation/WatermarkTextBox.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Implementation/WatermarkTextBox.cs index 5308bec5..1b15b161 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Implementation/WatermarkTextBox.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Implementation/WatermarkTextBox.cs @@ -46,6 +46,23 @@ namespace Xceed.Wpf.Toolkit #endregion //SelectAllOnGotFocus + #region KeepWatermarkOnGotFocus + + public static readonly DependencyProperty KeepWatermarkOnGotFocusProperty = DependencyProperty.Register( "KeepWatermarkOnGotFocus", typeof( bool ), typeof( WatermarkTextBox ), new UIPropertyMetadata( false ) ); + public bool KeepWatermarkOnGotFocus + { + get + { + return ( bool )GetValue( KeepWatermarkOnGotFocusProperty ); + } + set + { + SetValue( KeepWatermarkOnGotFocusProperty, value ); + } + } + + #endregion //KeepWatermarkOnGotFocus + #region Watermark public static readonly DependencyProperty WatermarkProperty = DependencyProperty.Register( "Watermark", typeof( object ), typeof( WatermarkTextBox ), new UIPropertyMetadata( null ) ); diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Aero2.NormalColor.xaml index 99eb1b73..e28549b6 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Aero2.NormalColor.xaml @@ -77,6 +77,7 @@ + @@ -84,7 +85,16 @@ - + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Generic.xaml index 189bb50c..4f32a964 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Generic.xaml @@ -84,6 +84,7 @@ + @@ -91,6 +92,19 @@ + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs index 31735a9d..39e0ac4a 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs @@ -341,6 +341,9 @@ namespace Xceed.Wpf.Toolkit if( !( o is WizardPage ) ) throw new NotSupportedException( "Wizard should only contains WizardPages." ); } + + if( Items.Count > 0 && CurrentPage == null ) + CurrentPage = Items[ 0 ] as WizardPage; } protected override void OnPropertyChanged( DependencyPropertyChangedEventArgs e ) diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj index 274a30fd..8681c2a5 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj @@ -414,8 +414,10 @@ + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs index 5d0a8f10..a2dee8ce 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs @@ -21,7 +21,7 @@ internal static class _XceedVersionInfo { [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )] - public const string BaseVersion = "2.6"; + public const string BaseVersion = "2.7"; [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )] public const string Version = BaseVersion + ".0.0"; diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Implementation/Calculator.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Implementation/Calculator.cs index 6100f6bf..29b52fcf 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Implementation/Calculator.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Implementation/Calculator.cs @@ -93,6 +93,24 @@ namespace Xceed.Wpf.Toolkit #region Properties + #region CalculatorButtonPanelTemplate + + public static readonly DependencyProperty CalculatorButtonPanelTemplateProperty = DependencyProperty.Register( "CalculatorButtonPanelTemplate" + , typeof( ControlTemplate ), typeof( Calculator ), new UIPropertyMetadata( null ) ); + public ControlTemplate CalculatorButtonPanelTemplate + { + get + { + return (ControlTemplate)GetValue( CalculatorButtonPanelTemplateProperty ); + } + set + { + SetValue( CalculatorButtonPanelTemplateProperty, value ); + } + } + + #endregion //CalculatorButtonPanelTemplate + #region CalculatorButtonType public static readonly DependencyProperty CalculatorButtonTypeProperty = DependencyProperty.RegisterAttached( "CalculatorButtonType", typeof( CalculatorButtonType ), typeof( Calculator ), new UIPropertyMetadata( CalculatorButtonType.None, OnCalculatorButtonTypeChanged ) ); @@ -112,7 +130,10 @@ namespace Xceed.Wpf.Toolkit { Button button = o as Button; button.CommandParameter = newValue; - button.Content = CalculatorUtilities.GetCalculatorButtonContent( newValue ); + if( button.Content == null ) + { + button.Content = CalculatorUtilities.GetCalculatorButtonContent( newValue ); + } } #endregion //CalculatorButtonType diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Aero2.NormalColor.xaml index 74f11f0e..9edea9e0 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Aero2.NormalColor.xaml @@ -243,7 +243,9 @@ Text="{Binding DisplayText, RelativeSource={RelativeSource TemplatedParent}}" /> - + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Generic.xaml index ad77bac2..278d13ac 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Calculator/Themes/Generic.xaml @@ -776,7 +776,7 @@ diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Implementation/CheckComboBox.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Implementation/CheckComboBox.cs index 520e9f39..edb55d9f 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Implementation/CheckComboBox.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Implementation/CheckComboBox.cs @@ -35,6 +35,7 @@ namespace Xceed.Wpf.Toolkit #region Members private ValueChangeHelper _displayMemberPathValuesChangeHelper; + private bool _ignoreTextValueChanged; private Popup _popup; private List _initialValue = new List(); @@ -58,9 +59,28 @@ namespace Xceed.Wpf.Toolkit #region Properties + #region IsEditable + + public static readonly DependencyProperty IsEditableProperty = DependencyProperty.Register( "IsEditable", typeof( bool ), typeof( CheckComboBox ) + , new UIPropertyMetadata( false ) ); + public bool IsEditable + { + get + { + return (bool)GetValue( IsEditableProperty ); + } + set + { + SetValue( IsEditableProperty, value ); + } + } + + #endregion + #region Text - public static readonly DependencyProperty TextProperty = DependencyProperty.Register( "Text", typeof( string ), typeof( CheckComboBox ), new UIPropertyMetadata( null ) ); + public static readonly DependencyProperty TextProperty = DependencyProperty.Register( "Text", typeof( string ), typeof( CheckComboBox ) + , new UIPropertyMetadata( null, OnTextChanged ) ); public string Text { get @@ -73,6 +93,21 @@ namespace Xceed.Wpf.Toolkit } } + private static void OnTextChanged( DependencyObject o, DependencyPropertyChangedEventArgs e ) + { + var checkComboBox = o as CheckComboBox; + if( checkComboBox != null ) + checkComboBox.OnTextChanged( (string)e.OldValue, (string)e.NewValue ); + } + + protected virtual void OnTextChanged( string oldValue, string newValue ) + { + if( !this.IsInitialized || _ignoreTextValueChanged ) + return; + + this.UpdateFromText(); + } + #endregion #region IsDropDownOpen @@ -254,7 +289,26 @@ namespace Xceed.Wpf.Toolkit #endif if( String.IsNullOrEmpty( Text ) || !Text.Equals( newValue ) ) + { + _ignoreTextValueChanged = true; Text = newValue; + _ignoreTextValueChanged = false; + } + } + + /// + /// Updates the SelectedItems collection based on the content of + /// the Text property. + /// + private void UpdateFromText() + { + List selectedValues = null; + if( !String.IsNullOrEmpty( this.Text ) ) + { + selectedValues = this.Text.Replace( " ", string.Empty ).Split( new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries ).ToList(); + } + + this.UpdateFromList( selectedValues, this.GetItemDisplayValue ); } protected object GetItemDisplayValue( object item ) diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Aero2.NormalColor.xaml index 61baea1d..f78f8901 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Aero2.NormalColor.xaml @@ -25,17 +25,21 @@ M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z - diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Generic.xaml index b83f4aef..b7e6c279 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/CheckComboBox/Themes/Generic.xaml @@ -20,23 +20,28 @@ xmlns:conv="clr-namespace:Xceed.Wpf.Toolkit.Core.Converters" xmlns:chrome="clr-namespace:Xceed.Wpf.Toolkit.Chromes"> - + - + - M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z + M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorCanvas/Implementation/ColorCanvas.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorCanvas/Implementation/ColorCanvas.cs index 64edf49d..d3a010b2 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorCanvas/Implementation/ColorCanvas.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorCanvas/Implementation/ColorCanvas.cs @@ -46,6 +46,7 @@ namespace Xceed.Wpf.Toolkit private TextBox _hexadecimalTextBox; private Point? _currentColorPosition; private bool _surpressPropertyChanged; + private bool _updateSpectrumSliderValue = true; #endregion //Private Members @@ -525,8 +526,10 @@ namespace Xceed.Wpf.Toolkit HsvColor hsv = ColorUtilities.ConvertRgbToHsv( color.Value.R, color.Value.G, color.Value.B ); - if( !( color.Value.R == color.Value.G && color.Value.R == color.Value.B ) ) + if( _updateSpectrumSliderValue ) + { _spectrumSlider.Value = hsv.H; + } Point p = new Point( hsv.S, 1 - hsv.V ); @@ -545,7 +548,9 @@ namespace Xceed.Wpf.Toolkit }; var currentColor = ColorUtilities.ConvertHsvToRgb( hsv.H, hsv.S, hsv.V ); currentColor.A = A; + _updateSpectrumSliderValue = false; SelectedColor = currentColor; + _updateSpectrumSliderValue = true; SetHexadecimalStringProperty( GetFormatedColorString( SelectedColor ), false ); } diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorCanvas/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorCanvas/Themes/Generic.xaml index ac04ae9e..e4e38144 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorCanvas/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorCanvas/Themes/Generic.xaml @@ -19,252 +19,409 @@ xmlns:local="clr-namespace:Xceed.Wpf.Toolkit" xmlns:conv="clr-namespace:Xceed.Wpf.Toolkit.Core.Converters"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Aero2.NormalColor.xaml index 4c99e501..30072651 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Aero2.NormalColor.xaml @@ -37,7 +37,19 @@ - + + + + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Generic.xaml index ae2f89a6..2930e304 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/ColorPicker/Themes/Generic.xaml @@ -60,7 +60,19 @@ - + + + + @@ -75,6 +87,12 @@ + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Core/Converters/HalfConverter.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Core/Converters/HalfConverter.cs index 97fa8a50..390da4cd 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Core/Converters/HalfConverter.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Core/Converters/HalfConverter.cs @@ -28,7 +28,7 @@ namespace Xceed.Wpf.Toolkit.Core.Converters public object Convert( object value, Type targetType, object parameter, CultureInfo culture ) { double size = ( double )value; - double modifier = double.Parse( ( string )parameter); + double modifier = (parameter != null) ? double.Parse( ( string )parameter ) : 0d; if( modifier != 0 ) return Math.Max(0, size - modifier) / 2; diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimePicker/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimePicker/Themes/Aero2.NormalColor.xaml index 2e9a3adb..e4325807 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimePicker/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimePicker/Themes/Aero2.NormalColor.xaml @@ -27,6 +27,7 @@ + @@ -130,7 +131,8 @@ IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource DateTimePickerToggleButtonStyle}" IsHitTestVisible="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" - IsEnabled="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" /> + IsEnabled="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" + Visibility="{TemplateBinding ShowDropDownButton, Converter={StaticResource BooleanToVisibilityConverter}}" /> diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimePicker/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimePicker/Themes/Generic.xaml index 862db0af..6d58602a 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimePicker/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimePicker/Themes/Generic.xaml @@ -23,6 +23,7 @@ xmlns:conv="clr-namespace:Xceed.Wpf.Toolkit.Core.Converters"> + @@ -140,7 +141,8 @@ IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource DateTimePickerToggleButtonStyle}" IsHitTestVisible="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" - IsEnabled="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" /> + IsEnabled="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" + Visibility="{TemplateBinding ShowDropDownButton, Converter={StaticResource BooleanToVisibilityConverter}}"/> diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimeUpDown/Implementation/DateTimeUpDown.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimeUpDown/Implementation/DateTimeUpDown.cs index 8cdbe198..99e05328 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimeUpDown/Implementation/DateTimeUpDown.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DateTimeUpDown/Implementation/DateTimeUpDown.cs @@ -835,9 +835,25 @@ namespace Xceed.Wpf.Toolkit private bool TryParseDateTime( string text, out DateTime result ) { bool isValid = false; + result = this.ContextNow; - DateTime current = this.Value.HasValue ? this.Value.Value : DateTime.Parse( this.ContextNow.ToString(), this.CultureInfo.DateTimeFormat ); - isValid = DateTimeParser.TryParse( text, this.GetFormatString( Format ), current, this.CultureInfo, out result ); + DateTime current = this.ContextNow; + if( this.Value.HasValue ) + { + current = this.Value.Value; + } + else + { + try + { + current = DateTime.Parse( this.ContextNow.ToString(), this.CultureInfo.DateTimeFormat ); + isValid = DateTimeParser.TryParse( text, this.GetFormatString( Format ), current, this.CultureInfo, out result ); + } + catch( FormatException ) + { + isValid = false; + } + } if( !isValid ) { diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs index 96f6d106..9c0798ba 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Implementation/DropDownButton.cs @@ -139,6 +139,36 @@ namespace Xceed.Wpf.Toolkit #endregion //IsOpen + #region MaxDropDownHeight + + public static readonly DependencyProperty MaxDropDownHeightProperty = DependencyProperty.Register( "MaxDropDownHeight", typeof( double ) + , typeof( DropDownButton ), new UIPropertyMetadata( SystemParameters.PrimaryScreenHeight / 2.0, OnMaxDropDownHeightChanged ) ); + public double MaxDropDownHeight + { + get + { + return (double)GetValue( MaxDropDownHeightProperty ); + } + set + { + SetValue( MaxDropDownHeightProperty, value ); + } + } + + private static void OnMaxDropDownHeightChanged( DependencyObject o, DependencyPropertyChangedEventArgs e ) + { + var dropDownButton = o as DropDownButton; + if( dropDownButton != null ) + dropDownButton.OnMaxDropDownHeightChanged( (double)e.OldValue, (double)e.NewValue ); + } + + protected virtual void OnMaxDropDownHeightChanged( double oldValue, double newValue ) + { + // TODO: Add your property changed side-effects. Descendants can override as well. + } + + #endregion + #endregion //Properties #region Base Class Overrides @@ -159,6 +189,15 @@ namespace Xceed.Wpf.Toolkit _popup.Opened += Popup_Opened; } + protected override void OnIsKeyboardFocusWithinChanged( DependencyPropertyChangedEventArgs e ) + { + base.OnIsKeyboardFocusWithinChanged( e ); + if( !( bool )e.NewValue ) + { + this.CloseDropDown( false ); + } + } + #endregion //Base Class Overrides #region Events diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Aero2.NormalColor.xaml index 828fa3b5..9f84846c 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Aero2.NormalColor.xaml @@ -21,63 +21,83 @@ xmlns:themes="clr-namespace:Xceed.Wpf.Toolkit.Themes" xmlns:local="clr-namespace:Xceed.Wpf.Toolkit"> - - - + + + - + - - - + + + - + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Generic.xaml index e90fdcc9..b7f755cc 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/DropDownButton/Themes/Generic.xaml @@ -125,9 +125,13 @@ IsOpen="{Binding IsChecked, ElementName=PART_DropDownButton}"> - + BorderBrush="{StaticResource PopupDarkBorderBrush}" + MaxHeight="{TemplateBinding MaxDropDownHeight}"> + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs index add955cc..25cad5ed 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs @@ -1344,7 +1344,18 @@ namespace Xceed.Wpf.Toolkit e.Handled = true; - this.ProcessTextInput( e.Text ); + if( this.CharacterCasing == CharacterCasing.Upper ) + { + this.ProcessTextInput( e.Text.ToUpper() ); + } + else if( this.CharacterCasing == CharacterCasing.Lower ) + { + this.ProcessTextInput( e.Text.ToLower() ); + } + else + { + this.ProcessTextInput( e.Text ); + } base.OnTextInput( e ); } diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/MessageBox/Implementation/MessageBox.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/MessageBox/Implementation/MessageBox.cs index c7205d91..8c25d69c 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/MessageBox/Implementation/MessageBox.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/MessageBox/Implementation/MessageBox.cs @@ -26,6 +26,7 @@ using System.Security; using Xceed.Wpf.Toolkit.Primitives; using System.Diagnostics; using System.Windows.Media.Imaging; +using System.Windows.Threading; namespace Xceed.Wpf.Toolkit { @@ -767,6 +768,51 @@ namespace Xceed.Wpf.Toolkit return msgBox.MessageBoxResult; } + private delegate Window ComputeOwnerWindowCoreDelegate(); + + /// + /// Resolves the owner Window of the MessageBox. + /// + /// the owner Window + private static Window ComputeOwnerWindow() + { + Window result = null; + + if( Application.Current.Dispatcher.CheckAccess() ) + { + result = ComputeOwnerWindowCore(); + } + else + { + Application.Current.Dispatcher.BeginInvoke( new Action( () => + { + result = ComputeOwnerWindowCore(); + } + ) ); + } + + return result; + } + + private static Window ComputeOwnerWindowCore() + { + Window owner = null; + + if( Application.Current != null ) + { + foreach( Window w in Application.Current.Windows ) + { + if( w.IsActive ) + { + owner = w; + break; + } + } + } + + return owner; + } + /// /// Sets the message image source. /// @@ -818,6 +864,7 @@ namespace Xceed.Wpf.Toolkit newWindow.AllowsTransparency = true; newWindow.Background = Brushes.Transparent; newWindow.Content = this; + newWindow.Owner = _owner ?? ComputeOwnerWindow(); if( newWindow.Owner != null ) newWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs index 11f25f99..a6fd9058 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Selector.cs @@ -462,6 +462,35 @@ namespace Xceed.Wpf.Toolkit.Primitives return value; } + internal void UpdateFromList( List selectedValues, Func GetItemfunction ) + { + _ignoreSelectedItemsCollectionChanged++; + // Just update the SelectedItems collection content + // and let the synchronization be made from UpdateFromSelectedItems(); + SelectedItems.Clear(); + + if( (selectedValues != null) && (selectedValues.Count > 0) ) + { + ValueEqualityComparer comparer = new ValueEqualityComparer(); + + foreach( object item in ItemsCollection ) + { + object itemValue = GetItemfunction( item ); + + bool isSelected = (itemValue != null) + && selectedValues.Contains( itemValue.ToString(), comparer ); + + if( isSelected ) + { + SelectedItems.Add( item ); + } + } + } + _ignoreSelectedItemsCollectionChanged--; + + this.UpdateFromSelectedItems(); + } + private bool? GetSelectedMemberPathValue( object item ) { PropertyInfo prop = this.GetSelectedMemberPathProperty(item); @@ -734,32 +763,13 @@ namespace Xceed.Wpf.Toolkit.Primitives /// private void UpdateFromSelectedValue() { - _ignoreSelectedItemsCollectionChanged++; - // Just update the SelectedItems collection content - // and let the synchronization be made from UpdateFromSelectedItems(); - SelectedItems.Clear(); - + List selectedValues = null; if( !String.IsNullOrEmpty( SelectedValue ) ) { - List selectedValues = SelectedValue.Split( new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries ).ToList(); - ValueEqualityComparer comparer = new ValueEqualityComparer(); - - foreach( object item in ItemsCollection ) - { - object itemValue = this.GetItemValue( item ); - - bool isSelected = ( itemValue != null ) - && selectedValues.Contains( itemValue.ToString(), comparer ); - - if( isSelected ) - { - SelectedItems.Add( item ); - } - } + selectedValues = SelectedValue.Split( new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries ).ToList(); } - _ignoreSelectedItemsCollectionChanged--; - this.UpdateFromSelectedItems(); + this.UpdateFromList( selectedValues, this.GetItemValue ); } #endregion //Methods diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Aero2/SelectorItem.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Aero2/SelectorItem.xaml index ac210dbb..ecfdaddf 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Aero2/SelectorItem.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Aero2/SelectorItem.xaml @@ -39,14 +39,18 @@ Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> - + + VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Generic/SelectorItem.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Generic/SelectorItem.xaml index 1c643794..970e66e3 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Generic/SelectorItem.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/Themes/Generic/SelectorItem.xaml @@ -40,14 +40,18 @@ Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> - + + VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/ValueRangeTextBox.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/ValueRangeTextBox.cs index dee26a93..7bc15cc9 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/ValueRangeTextBox.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Primitives/ValueRangeTextBox.cs @@ -1100,7 +1100,7 @@ namespace Xceed.Wpf.Toolkit.Primitives if( ( ( value != null ) && ( value != DBNull.Value ) ) && ( value.GetType() != type ) ) { - return System.Convert.ChangeType( value, type, CultureInfo.InvariantCulture ); + return ChangeTypeHelper.ChangeType( value, type, CultureInfo.InvariantCulture ); } return value; diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ContainerHelperBase.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ContainerHelperBase.cs index a3c66bc5..d73a925f 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ContainerHelperBase.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ContainerHelperBase.cs @@ -149,6 +149,10 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid { this.OnAutoGeneratePropertiesChanged(); } + else if( propertyName == ReflectionHelper.GetPropertyOrFieldName( () => ps.HideInheritedProperties ) ) + { + this.OnHideInheritedPropertiesChanged(); + } else if(propertyName == ReflectionHelper.GetPropertyOrFieldName( () => ps.EditorDefinitions )) { this.OnEditorDefinitionsChanged(); @@ -165,6 +169,8 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid protected virtual void OnAutoGeneratePropertiesChanged() { } + protected virtual void OnHideInheritedPropertiesChanged() { } + protected virtual void OnEditorDefinitionsChanged() { } protected virtual void OnPropertyDefinitionsChanged() { } diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Converters/IsDefaultCategoryConverter.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Converters/IsDefaultCategoryConverter.cs new file mode 100644 index 00000000..548c706f --- /dev/null +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Converters/IsDefaultCategoryConverter.cs @@ -0,0 +1,45 @@ +/************************************************************************************* + + Extended WPF Toolkit + + Copyright (C) 2007-2013 Xceed Software Inc. + + This program is provided to you under the terms of the Microsoft Public + License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license + + For more features, controls, and fast professional support, + pick up the Plus Edition at http://xceed.com/wpf_toolkit + + Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids + + ***********************************************************************************/ + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Windows.Data; + +namespace Xceed.Wpf.Toolkit.PropertyGrid.Converters +{ + public class IsDefaultCategoryConverter : IValueConverter + { + public object Convert( object value, Type targetType, object parameter, CultureInfo culture ) + { + string categoryName = value as string; + if( categoryName != null ) + { + return ( categoryName == CategoryAttribute.Default.Category ); + } + + return false; + } + + public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture ) + { + throw new NotImplementedException(); + } + } +} diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CustomPropertyItem.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CustomPropertyItem.cs index 302c4880..b49c9bc9 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CustomPropertyItem.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CustomPropertyItem.cs @@ -32,13 +32,20 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid /// public class CustomPropertyItem : PropertyItemBase { + #region Constructors + internal CustomPropertyItem() { } - internal CustomPropertyItem( bool isPropertyGridCategorized ) + internal CustomPropertyItem( bool isPropertyGridCategorized, bool isSortedAlphabetically ) { _isPropertyGridCategorized = isPropertyGridCategorized; + _isSortedAlphabetically = isSortedAlphabetically; } + #endregion + + #region Properties + #region Category public static readonly DependencyProperty CategoryProperty = @@ -145,5 +152,20 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } #endregion //Value + + #endregion + + #region Overrides + + protected override void OnEditorChanged( FrameworkElement oldValue, FrameworkElement newValue ) + { + if( oldValue != null ) + oldValue.DataContext = null; + + if( newValue != null ) + newValue.DataContext = this; + } + + #endregion } } diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Editors/PrimitiveTypeCollectionEditor.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Editors/PrimitiveTypeCollectionEditor.cs index da8ff71a..07540dc6 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Editors/PrimitiveTypeCollectionEditor.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/Editors/PrimitiveTypeCollectionEditor.cs @@ -15,6 +15,7 @@ ***********************************************************************************/ using System.Windows; +using Xceed.Wpf.Toolkit.Core.Utilities; namespace Xceed.Wpf.Toolkit.PropertyGrid.Editors { public class PrimitiveTypeCollectionEditor : TypeEditor @@ -39,13 +40,9 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid.Editors { Editor.ItemType = type.GetElementType(); } - else if( type.IsGenericType ) + else { - var typeArguments = type.GetGenericArguments(); - if( typeArguments.Length > 0 ) - { - Editor.ItemType = typeArguments[ 0 ]; - } + Editor.ItemType = ListUtilities.GetListItemType( type ); } base.ResolveValueBinding( propertyItem ); diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/IPropertyContainer.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/IPropertyContainer.cs index 358f35f8..465ff068 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/IPropertyContainer.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/IPropertyContainer.cs @@ -42,8 +42,12 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid bool IsCategorized { get; } + bool IsSortedAlphabetically { get; } + bool AutoGenerateProperties { get; } + bool HideInheritedProperties { get; } + FilterInfo FilterInfo { get; } } } diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelper.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelper.cs index 89ae7149..15e83471 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelper.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelper.cs @@ -55,7 +55,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid { try { - List descriptors = ObjectContainerHelperBase.GetPropertyDescriptors( SelectedObject ); + List descriptors = ObjectContainerHelperBase.GetPropertyDescriptors( SelectedObject, this.PropertyContainer.HideInheritedProperties ); foreach( var descriptor in descriptors ) { var propertyDef = this.GetPropertyDefinition( descriptor ); @@ -96,6 +96,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid Debug.Assert( SelectedObject != null ); propertyItem.Instance = SelectedObject; propertyItem.CategoryOrder = this.GetCategoryOrder( definition.CategoryValue ); + propertyItem.WillRefreshPropertyGrid = this.GetWillRefreshPropertyGrid( property ); return propertyItem; } diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelperBase.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelperBase.cs index 49b66b8a..16106b33 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelperBase.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/ObjectContainerHelperBase.cs @@ -145,6 +145,11 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid this.RegenerateProperties(); } + protected override void OnHideInheritedPropertiesChanged() + { + this.RegenerateProperties(); + } + protected override void OnEditorDefinitionsChanged() { this.RegenerateProperties(); @@ -167,7 +172,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid private void UpdateCategorization( bool updateSubPropertiesCategorization ) { - _propertyItemCollection.UpdateCategorization( this.ComputeCategoryGroupDescription(), this.PropertyContainer.IsCategorized ); + _propertyItemCollection.UpdateCategorization( this.ComputeCategoryGroupDescription(), this.PropertyContainer.IsCategorized, this.PropertyContainer.IsSortedAlphabetically ); if( updateSubPropertiesCategorization && (_propertyItemCollection.Count > 0) ) { foreach( PropertyItem propertyItem in _propertyItemCollection ) @@ -175,7 +180,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid PropertyItemCollection subPropertyItemsCollection = propertyItem.Properties as PropertyItemCollection; if( subPropertyItemsCollection != null ) { - subPropertyItemsCollection.UpdateCategorization( this.ComputeCategoryGroupDescription(), this.PropertyContainer.IsCategorized ); + subPropertyItemsCollection.UpdateCategorization( this.ComputeCategoryGroupDescription(), this.PropertyContainer.IsCategorized, this.PropertyContainer.IsSortedAlphabetically ); } } } @@ -245,7 +250,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } } - protected static List GetPropertyDescriptors( object instance ) + protected static List GetPropertyDescriptors( object instance, bool hideInheritedProperties ) { PropertyDescriptorCollection descriptors; @@ -262,14 +267,40 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid descriptors = tc.GetProperties( instance ); } - return ( descriptors != null ) - ? descriptors.Cast().ToList() - : null; + if( ( descriptors != null ) ) + { + var descriptorsProperties = descriptors.Cast(); + if( hideInheritedProperties ) + { + var properties = from p in descriptorsProperties + where p.ComponentType == instance.GetType() + select p; + return properties.ToList(); + } + else + { + return descriptorsProperties.ToList(); + } + } + + return null; } + protected bool GetWillRefreshPropertyGrid( PropertyDescriptor propertyDescriptor ) + { + if( propertyDescriptor == null ) + return false; + + var attribute = PropertyGridUtilities.GetAttribute( propertyDescriptor ); + if( attribute != null ) + return attribute.RefreshProperties != RefreshProperties.None; + + return false; + } + internal void InitializeDescriptorDefinition( DescriptorPropertyDefinitionBase descriptorDef, PropertyDefinition propertyDefinition ) diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyGrid.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyGrid.cs index d2a1c6cf..cf937524 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyGrid.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyGrid.cs @@ -213,6 +213,23 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid #endregion //FilterWatermark + #region HideInheritedProperties + + public static readonly DependencyProperty HideInheritedPropertiesProperty = DependencyProperty.Register( "HideInheritedProperties", typeof( bool ), typeof( PropertyGrid ), new UIPropertyMetadata( false ) ); + public bool HideInheritedProperties + { + get + { + return ( bool )GetValue( HideInheritedPropertiesProperty ); + } + set + { + SetValue( HideInheritedPropertiesProperty, value ); + } + } + + #endregion //HideInheritedProperties + #region IsCategorized public static readonly DependencyProperty IsCategorizedProperty = DependencyProperty.Register( "IsCategorized", typeof( bool ), typeof( PropertyGrid ), new UIPropertyMetadata( true, OnIsCategorizedChanged ) ); @@ -748,6 +765,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid UpdateContainerHelper(); EditorDefinitions = new EditorDefinitionCollection(); PropertyDefinitions = new PropertyDefinitionCollection(); + this.PropertyValueChanged += this.PropertyGrid_PropertyValueChanged; AddHandler( PropertyItemBase.ItemSelectionChangedEvent, new RoutedEventHandler( OnItemSelectionChanged ) ); AddHandler( PropertyItemsControl.PreparePropertyItemEvent, new PropertyItemEventHandler( OnPreparePropertyItemInternal ) ); @@ -852,6 +870,24 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } + private void PropertyGrid_PropertyValueChanged( object sender, PropertyValueChangedEventArgs e ) + { + var modifiedPropertyItem = e.OriginalSource as PropertyItem; + if( modifiedPropertyItem != null ) + { + if( modifiedPropertyItem.WillRefreshPropertyGrid ) + this.UpdateContainerHelper(); + + var parentPropertyItem = modifiedPropertyItem.ParentNode as PropertyItem; + if( ( parentPropertyItem != null ) && parentPropertyItem.IsExpandable ) + { + //Rebuild Editor for parent propertyItem if one of its sub-propertyItem have changed. + this.RebuildEditor( parentPropertyItem ); + } + } + } + + #endregion //Event Handlers #region Commands @@ -870,6 +906,30 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid #region Methods + + + + + + + + + + + + private void RebuildEditor( PropertyItem propertyItem ) + { + ObjectContainerHelperBase objectContainerHelperBase = propertyItem.ContainerHelper as ObjectContainerHelperBase; + //Re-build the editor to update this propertyItem + FrameworkElement editor = objectContainerHelperBase.GenerateChildrenEditorElement( propertyItem ); + if( editor != null ) + { + // Tag the editor as generated to know if we should clear it. + ContainerHelperBase.SetIsGenerated( editor, true ); + propertyItem.Editor = editor; + } + } + private void UpdateContainerHelper() { // Keep a backup of the template element and initialize the @@ -952,6 +1012,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid + #endregion //Methods #region Events @@ -1164,6 +1225,14 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } } + bool IPropertyContainer.IsSortedAlphabetically + { + get + { + return true; + } + } + #endregion diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs index 63263553..8e400e45 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItem.cs @@ -126,21 +126,23 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } } - protected override void OnEditorChanged( FrameworkElement oldValue, FrameworkElement newValue ) + protected override object OnCoerceValueChanged( object baseValue ) { - if( oldValue != null ) - oldValue.DataContext = null; + // Propagate error from DescriptorPropertyDefinitionBase to PropertyItem.Value + // to see the red error rectangle in the propertyGrid. + BindingExpression be = this.GetBindingExpression( PropertyItem.ValueProperty ); + this.SetRedInvalidBorder( be ); + return baseValue; + } - if( newValue != null ) - newValue.DataContext = this; + protected override void OnValueChanged( object oldValue, object newValue ) + { + base.OnValueChanged( oldValue, newValue ); } - protected override object OnCoerceValueChanged( object baseValue ) + internal void SetRedInvalidBorder( BindingExpression be ) { - // Propagate error from DescriptorPropertyDefinitionBase to PropertyItem.Value - // to see the red error rectangle in the propertyGrid. - BindingExpression be = GetBindingExpression( PropertyItem.ValueProperty ); - if( ( be != null ) && be.DataItem is DescriptorPropertyDefinitionBase ) + if( (be != null) && be.DataItem is DescriptorPropertyDefinitionBase ) { DescriptorPropertyDefinitionBase descriptor = be.DataItem as DescriptorPropertyDefinitionBase; if( Validation.GetHasError( descriptor ) ) @@ -149,12 +151,6 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid Validation.MarkInvalid( be, errors[ 0 ] ); } } - return baseValue; - } - - protected override void OnValueChanged( object oldValue, object newValue ) - { - base.OnValueChanged( oldValue, newValue ); } private void OnDefinitionContainerHelperInvalidated( object sender, EventArgs e ) @@ -172,7 +168,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid #region Constructors internal PropertyItem( DescriptorPropertyDefinitionBase definition ) - : base( definition.IsPropertyGridCategorized ) + : base( definition.IsPropertyGridCategorized, !definition.PropertyType.IsArray ) { if( definition == null ) throw new ArgumentNullException( "definition" ); diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemBase.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemBase.cs index 049b5c9f..10e6d317 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemBase.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemBase.cs @@ -41,6 +41,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid private ContainerHelperBase _containerHelper; private IPropertyContainer _parentNode; internal bool _isPropertyGridCategorized; + internal bool _isSortedAlphabetically = true; #region Properties @@ -118,7 +119,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid private static void OnEditorChanged( DependencyObject o, DependencyPropertyChangedEventArgs e ) { - PropertyItem propertyItem = o as PropertyItem; + PropertyItemBase propertyItem = o as PropertyItemBase; if( propertyItem != null ) propertyItem.OnEditorChanged( ( FrameworkElement )e.OldValue, ( FrameworkElement )e.NewValue ); } @@ -298,6 +299,25 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid #endregion + #region WillRefreshPropertyGrid + + public static readonly DependencyProperty WillRefreshPropertyGridProperty = + DependencyProperty.Register( "WillRefreshPropertyGrid", typeof( bool ), typeof( PropertyItemBase ), new UIPropertyMetadata( false ) ); + + public bool WillRefreshPropertyGrid + { + get + { + return ( bool )GetValue( WillRefreshPropertyGridProperty ); + } + set + { + SetValue( WillRefreshPropertyGridProperty, value ); + } + } + + #endregion //WillRefreshPropertyGrid + #endregion //Properties #region Events @@ -425,7 +445,10 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid EditorDefinitionCollection IPropertyContainer.EditorDefinitions { - get { return ParentNode.EditorDefinitions; } + get + { + return (this.ParentNode != null) ? this.ParentNode.EditorDefinitions : null; + } } PropertyDefinitionCollection IPropertyContainer.PropertyDefinitions @@ -449,11 +472,27 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } } + bool IPropertyContainer.IsSortedAlphabetically + { + get + { + return _isSortedAlphabetically; + } + } + bool IPropertyContainer.AutoGenerateProperties { get { return true; } } + bool IPropertyContainer.HideInheritedProperties + { + get + { + return false; + } + } + FilterInfo IPropertyContainer.FilterInfo { get { return new FilterInfo(); } diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemCollection.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemCollection.cs index 955b7cd4..30f87609 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemCollection.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/PropertyItemCollection.cs @@ -107,7 +107,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid OnCollectionChanged( new NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction.Reset ) ); } - internal void UpdateCategorization( GroupDescription groupDescription, bool isPropertyGridCategorized ) + internal void UpdateCategorization( GroupDescription groupDescription, bool isPropertyGridCategorized, bool sortAlphabetically ) { // Compute Display Order relative to PropertyOrderAttributes on PropertyItem // which could be different in Alphabetical or Categorized mode. @@ -133,7 +133,10 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid } SortBy( PropertyOrderPropertyName, ListSortDirection.Ascending ); - SortBy( DisplayNamePropertyName, ListSortDirection.Ascending ); + if( sortAlphabetically ) + { + SortBy( DisplayNamePropertyName, ListSortDirection.Ascending ); + } } } @@ -153,7 +156,7 @@ namespace Xceed.Wpf.Toolkit.PropertyGrid var property = item as PropertyItem; if( property.DisplayName != null ) { - return property.DisplayName.ToLower().StartsWith( text.ToLower() ); + return property.DisplayName.ToLower().Contains( text.ToLower() ); } return false; diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Aero2.NormalColor.xaml index f581426e..bc485ad2 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Aero2.NormalColor.xaml @@ -46,6 +46,7 @@ + @@ -523,8 +524,10 @@ - + @@ -535,8 +538,8 @@ - + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Generic.xaml index 1807aee4..9378a0fa 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/PropertyGrid/Themes/Generic.xaml @@ -44,6 +44,7 @@ + @@ -858,8 +859,10 @@ - + @@ -869,8 +872,8 @@ - + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBar.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBar.cs index 8edd7501..669a4e43 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBar.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBar.cs @@ -261,7 +261,11 @@ namespace Xceed.Wpf.Toolkit { currentValue = Target.Selection.GetPropertyValue( formattingProperty ); } - button.IsChecked = ( ( currentValue == null ) || ( currentValue == DependencyProperty.UnsetValue ) ) + + if( currentValue == DependencyProperty.UnsetValue ) + return; + + button.IsChecked = ( currentValue == null ) ? false : currentValue != null && currentValue.Equals( expectedValue ); } @@ -273,7 +277,11 @@ namespace Xceed.Wpf.Toolkit { value = Target.Selection.GetPropertyValue( TextElement.FontFamilyProperty ); } - FontFamily currentFontFamily = ( FontFamily )( ( ( value == null ) || ( value == DependencyProperty.UnsetValue ) ) ? null : value ); + + if( value == DependencyProperty.UnsetValue ) + return; + + FontFamily currentFontFamily = ( FontFamily )value; if( currentFontFamily != null ) { _cmbFontFamilies.SelectedItem = currentFontFamily; @@ -288,7 +296,10 @@ namespace Xceed.Wpf.Toolkit value = Target.Selection.GetPropertyValue( TextElement.FontSizeProperty ); } - _cmbFontSizes.SelectedValue = ( ( value == null ) || ( value == DependencyProperty.UnsetValue ) ) ? null : value; + if( value == DependencyProperty.UnsetValue ) + return; + + _cmbFontSizes.SelectedValue = value; } private void UpdateFontColor() @@ -299,7 +310,10 @@ namespace Xceed.Wpf.Toolkit value = Target.Selection.GetPropertyValue( TextElement.ForegroundProperty ); } - Color? currentColor = ( ( value == null ) || ( value == DependencyProperty.UnsetValue ) + if( value == DependencyProperty.UnsetValue ) + return; + + Color? currentColor = ( ( value == null ) ? null : ( Color? )( ( SolidColorBrush )value ).Color ); _cmbFontColor.SelectedColor = currentColor; @@ -312,7 +326,11 @@ namespace Xceed.Wpf.Toolkit { value = Target.Selection.GetPropertyValue( TextElement.BackgroundProperty ); } - Color? currentColor = ( ( value == null ) || ( value == DependencyProperty.UnsetValue ) + + if( value == DependencyProperty.UnsetValue ) + return; + + Color? currentColor = ( ( value == null ) ? null : ( Color? )( ( SolidColorBrush )value ).Color ); _cmbFontBackgroundColor.SelectedColor = currentColor; diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Aero2.NormalColor.xaml index 5dd13f4a..bed8d150 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Aero2.NormalColor.xaml @@ -21,83 +21,109 @@ xmlns:themes="clr-namespace:Xceed.Wpf.Toolkit.Themes" xmlns:conv="clr-namespace:Xceed.Wpf.Toolkit.Core.Converters"> - - - + + + - + - - - + + + - + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Generic.xaml index 0acaafd7..ebec726c 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/SplitButton/Themes/Generic.xaml @@ -158,9 +158,13 @@ - + BorderBrush="{StaticResource ColorPickerDarkBorderBrush}" + MaxHeight="{TemplateBinding MaxDropDownHeight}"> + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Themes/Aero/Brushes_NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Themes/Aero/Brushes_NormalColor.xaml index a3e85993..61e2a4a9 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Themes/Aero/Brushes_NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Themes/Aero/Brushes_NormalColor.xaml @@ -66,8 +66,8 @@ - - + + @@ -78,8 +78,8 @@ - - + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Themes/Aero2.NormalColor.xaml index 5d23bd44..d97f65d1 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Themes/Aero2.NormalColor.xaml @@ -17,47 +17,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Implementation/WatermarkTextBox.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Implementation/WatermarkTextBox.cs index 5308bec5..1b15b161 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Implementation/WatermarkTextBox.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Implementation/WatermarkTextBox.cs @@ -46,6 +46,23 @@ namespace Xceed.Wpf.Toolkit #endregion //SelectAllOnGotFocus + #region KeepWatermarkOnGotFocus + + public static readonly DependencyProperty KeepWatermarkOnGotFocusProperty = DependencyProperty.Register( "KeepWatermarkOnGotFocus", typeof( bool ), typeof( WatermarkTextBox ), new UIPropertyMetadata( false ) ); + public bool KeepWatermarkOnGotFocus + { + get + { + return ( bool )GetValue( KeepWatermarkOnGotFocusProperty ); + } + set + { + SetValue( KeepWatermarkOnGotFocusProperty, value ); + } + } + + #endregion //KeepWatermarkOnGotFocus + #region Watermark public static readonly DependencyProperty WatermarkProperty = DependencyProperty.Register( "Watermark", typeof( object ), typeof( WatermarkTextBox ), new UIPropertyMetadata( null ) ); diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Aero2.NormalColor.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Aero2.NormalColor.xaml index aba2b3cd..64fb0e0d 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Aero2.NormalColor.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Aero2.NormalColor.xaml @@ -76,6 +76,7 @@ + @@ -83,6 +84,19 @@ + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Generic.xaml b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Generic.xaml index 0207bdfb..c476a40c 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/WatermarkTextBox/Themes/Generic.xaml @@ -83,6 +83,7 @@ + @@ -90,15 +91,26 @@ - + + + + + + + + + + - - diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs index 31735a9d..39e0ac4a 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs @@ -341,6 +341,9 @@ namespace Xceed.Wpf.Toolkit if( !( o is WizardPage ) ) throw new NotSupportedException( "Wizard should only contains WizardPages." ); } + + if( Items.Count > 0 && CurrentPage == null ) + CurrentPage = Items[ 0 ] as WizardPage; } protected override void OnPropertyChanged( DependencyPropertyChangedEventArgs e ) diff --git a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj index 0ca2abd9..c1996aab 100644 --- a/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj +++ b/ExtendedWPFToolkitSolution_35/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj @@ -50,10 +50,7 @@ - - False - ..\..\..\..\Bin\Release\WPFToolkit.dll - + @@ -419,6 +416,7 @@ +