├── .gitattributes ├── .github ├── no-response.yml └── workflows │ ├── ci.yml │ ├── codeql.yml │ ├── devskim.yml │ └── stale.yml ├── .gitignore ├── AUTHORS ├── CHANGELOG.md ├── CONTRIBUTORS ├── GitVersion.yml ├── Images ├── AboutDialog.png ├── ColorPicker.png ├── ColorPicker2.png ├── DataGrid.png ├── PropertyDialog.png ├── PropertyGrid.png ├── TreeListBox.png └── icon.png ├── LICENSE ├── README.md └── Source ├── AssemblyInfo.cs ├── Examples ├── Controls │ ├── ControlDemos │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── ControlDemos.csproj │ │ ├── ControlDemos.csproj.DotSettings │ │ ├── Examples.xml │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Pages │ │ │ ├── CheckMarkPage.xaml │ │ │ ├── CheckMarkPage.xaml.cs │ │ │ ├── ColorPickerPage.xaml │ │ │ ├── ColorPickerPage.xaml.cs │ │ │ ├── DirectoryPickerPage.xaml │ │ │ ├── DirectoryPickerPage.xaml.cs │ │ │ ├── DockPanelSplitterPage.xaml │ │ │ ├── DockPanelSplitterPage.xaml.cs │ │ │ ├── EditableTextBlockAndPropertyGridPage.xaml │ │ │ ├── EditableTextBlockAndPropertyGridPage.xaml.cs │ │ │ ├── EditableTextBlockPage.xaml │ │ │ ├── EditableTextBlockPage.xaml.cs │ │ │ ├── EnumMenuItemPage.xaml │ │ │ ├── EnumMenuItemPage.xaml.cs │ │ │ ├── FilePickerPage.xaml │ │ │ ├── FilePickerPage.xaml.cs │ │ │ ├── FormattingTextBoxPage.xaml │ │ │ ├── FormattingTextBoxPage.xaml.cs │ │ │ ├── HeaderedEntrySliderPage.xaml │ │ │ ├── HeaderedEntrySliderPage.xaml.cs │ │ │ ├── LinkBlockPage.xaml │ │ │ ├── LinkBlockPage.xaml.cs │ │ │ ├── PopupBoxPage.xaml │ │ │ ├── PopupBoxPage.xaml.cs │ │ │ ├── RadioButtonListPage.xaml │ │ │ ├── RadioButtonListPage.xaml.cs │ │ │ ├── SpinControlPage.xaml │ │ │ ├── SpinControlPage.xaml.cs │ │ │ ├── TextBlockExPage.xaml │ │ │ └── TextBlockExPage.xaml.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── app.config │ └── DialogDemos │ │ ├── 3d.png │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── DialogDemos.csproj │ │ ├── OptionsViewModel.cs │ │ ├── Person.cs │ │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ │ ├── Settings.cs │ │ ├── Window1.xaml │ │ ├── Window1.xaml.cs │ │ ├── app.config │ │ ├── pt.png │ │ └── pt32.png ├── DataGrid │ └── DataGridDemo │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── DataGridDemo.csproj │ │ ├── DataGridDemo.csproj.DotSettings │ │ ├── DataTypes │ │ ├── Mass.cs │ │ ├── MassConverter.cs │ │ └── MassValueConverter.cs │ │ ├── Examples │ │ ├── AbsoluteWidthExample.xaml │ │ ├── AbsoluteWidthExample.xaml.cs │ │ ├── ArrayOfArrayExample.xaml │ │ ├── ArrayOfArrayExample.xaml.cs │ │ ├── ArrayOfDoubleExample.xaml │ │ ├── ArrayOfDoubleExample.xaml.cs │ │ ├── AutoFillDisabledExample.xaml │ │ ├── AutoFillDisabledExample.xaml.cs │ │ ├── AutoWidthExample.xaml │ │ ├── AutoWidthExample.xaml.cs │ │ ├── BackgroundExample.xaml │ │ ├── BackgroundExample.xaml.cs │ │ ├── CustomColumnsExample.xaml │ │ ├── CustomColumnsExample.xaml.cs │ │ ├── CustomHeaderExample.xaml │ │ ├── CustomHeaderExample.xaml.cs │ │ ├── CustomRowsExample.xaml │ │ ├── CustomRowsExample.xaml.cs │ │ ├── CustomTypeDescriptorExample.xaml │ │ ├── CustomTypeDescriptorExample.xaml.cs │ │ ├── DatatableExample.xaml │ │ ├── DatatableExample.xaml.cs │ │ ├── DisabledExample.xaml │ │ ├── DisabledExample.xaml.cs │ │ ├── EasyInsertExample.xaml │ │ ├── EasyInsertExample.xaml.cs │ │ ├── EnableByAttributeExample.xaml │ │ ├── EnableByAttributeExample.xaml.cs │ │ ├── EnableByPropertyExample.xaml │ │ ├── EnableByPropertyExample.xaml.cs │ │ ├── ExampleViewModel.cs │ │ ├── ExceptionExample.xaml │ │ ├── ExceptionExample.xaml.cs │ │ ├── ExtendedToolkitExample.xaml │ │ ├── ExtendedToolkitExample.xaml.cs │ │ ├── GettingStartedExample.xaml │ │ ├── GettingStartedExample.xaml.cs │ │ ├── HeaderFormatStringExample.xaml │ │ ├── HeaderFormatStringExample.xaml.cs │ │ ├── InputDirectionExample.xaml │ │ ├── InputDirectionExample.xaml.cs │ │ ├── LargeCollectionExample.xaml │ │ ├── LargeCollectionExample.xaml.cs │ │ ├── LargeCollectionWpfExample.xaml │ │ ├── LargeCollectionWpfExample.xaml.cs │ │ ├── ListOfIntExample.xaml │ │ ├── ListOfIntExample.xaml.cs │ │ ├── ListOfList │ │ │ ├── ListOfListExample.xaml │ │ │ ├── ListOfListExample.xaml.cs │ │ │ ├── ListOfListOfBoolExample.xaml │ │ │ ├── ListOfListOfBoolExample.xaml.cs │ │ │ ├── ListOfListOfColorExample.xaml │ │ │ ├── ListOfListOfColorExample.xaml.cs │ │ │ ├── ListOfListOfFruitExample.xaml │ │ │ ├── ListOfListOfFruitExample.xaml.cs │ │ │ ├── ListOfListOfIntExample.xaml │ │ │ ├── ListOfListOfIntExample.xaml.cs │ │ │ ├── ListOfListOfMassExample.xaml │ │ │ └── ListOfListOfMassExample.xaml.cs │ │ ├── ListOfListWithBulkChangesExample.xaml │ │ ├── ListOfListWithBulkChangesExample.xaml.cs │ │ ├── ListOfMassExample.xaml │ │ ├── ListOfMassExample.xaml.cs │ │ ├── ListOfObjectExample.xaml │ │ ├── ListOfObjectExample.xaml.cs │ │ ├── ListOfPlainObjectCustomColumnsExample.xaml │ │ ├── ListOfPlainObjectCustomColumnsExample.xaml.cs │ │ ├── ListOfPlainObjectExample.xaml │ │ ├── ListOfPlainObjectExample.xaml.cs │ │ ├── ListOfStringExample.xaml │ │ ├── ListOfStringExample.xaml.cs │ │ ├── ListOfVectorExample.xaml │ │ ├── ListOfVectorExample.xaml.cs │ │ ├── NaturalSortingExample.xaml │ │ ├── NaturalSortingExample.xaml.cs │ │ ├── NullExample.xaml │ │ ├── NullExample.xaml.cs │ │ ├── NullableExample.xaml │ │ ├── NullableExample.xaml.cs │ │ ├── ObservableCollectionOfDoubleExample.xaml │ │ ├── ObservableCollectionOfDoubleExample.xaml.cs │ │ ├── ObservableCollectionOfExampleObjectExample.xaml │ │ ├── ObservableCollectionOfExampleObjectExample.xaml.cs │ │ ├── ObservableCollectionOfMassExample.xaml │ │ ├── ObservableCollectionOfMassExample.xaml.cs │ │ ├── ObservableCollectionOfStringExample.xaml │ │ ├── ObservableCollectionOfStringExample.xaml.cs │ │ ├── ObservableList.cs │ │ ├── ProgressExample.xaml │ │ ├── ProgressExample.xaml.cs │ │ ├── RelativeWidthExample.xaml │ │ ├── RelativeWidthExample.xaml.cs │ │ ├── ScrollViewerExample.xaml │ │ ├── ScrollViewerExample.xaml.cs │ │ ├── SelectedItemsExample.xaml │ │ ├── SelectedItemsExample.xaml.cs │ │ ├── SelectorExample.xaml │ │ ├── SelectorExample.xaml.cs │ │ ├── StandardDataGrid │ │ │ ├── GettingStartedExample.xaml │ │ │ └── GettingStartedExample.xaml.cs │ │ ├── SyncTableExample.xaml │ │ ├── SyncTableExample.xaml.cs │ │ ├── TableExample.xaml │ │ ├── TableExample.xaml.cs │ │ ├── TemplateExample.xaml │ │ ├── TemplateExample.xaml.cs │ │ ├── ThreadExample.xaml │ │ ├── ThreadExample.xaml.cs │ │ ├── ValidationExampleWindow.xaml │ │ ├── ValidationExampleWindow.xaml.cs │ │ ├── VectorExample.xaml │ │ ├── VectorExample.xaml.cs │ │ ├── WpfDataGridExample.xaml │ │ ├── WpfDataGridExample.xaml.cs │ │ └── WrapItems │ │ │ ├── ArrayOfObjectExample.xaml │ │ │ ├── ArrayOfObjectExample.xaml.cs │ │ │ ├── BackgroundBindingSourceExample.xaml │ │ │ ├── BackgroundBindingSourceExample.xaml.cs │ │ │ ├── IsEnabledBindingSourceExample.xaml │ │ │ ├── IsEnabledBindingSourceExample.xaml.cs │ │ │ ├── MultitypeMatrixExample.xaml │ │ │ ├── MultitypeMatrixExample.xaml.cs │ │ │ ├── ObservableCollectionOfObjectExample.xaml │ │ │ ├── ObservableCollectionOfObjectExample.xaml.cs │ │ │ ├── WrapItemsExample.xaml │ │ │ ├── WrapItemsExample.xaml.cs │ │ │ ├── WrapItemsOfMassExample.xaml │ │ │ └── WrapItemsOfMassExample.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Model │ │ ├── ExampleObject.cs │ │ ├── Fruit.cs │ │ ├── PlainOldObject.cs │ │ ├── StandardCollections.cs │ │ └── ValidatableObject.cs │ │ └── Properties │ │ └── AssemblyInfo.cs ├── ItemsBag │ └── ItemsBagDemo │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── ItemsBagDemo.csproj │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Model.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ └── app.config ├── PropertyGrid │ ├── CustomFactoryDemo │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Attributes │ │ │ └── ImportantAttribute.cs │ │ ├── CustomFactoryDemo.csproj │ │ ├── Factories │ │ │ ├── CustomPropertyGridControlFactory.cs │ │ │ ├── CustomPropertyGridOperator.cs │ │ │ └── ImportantPropertyItem.cs │ │ ├── Model │ │ │ ├── Range.cs │ │ │ └── TestObject.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ViewModels │ │ │ └── MainViewModel.cs │ │ ├── Views │ │ │ ├── MainWindow.xaml │ │ │ └── MainWindow.xaml.cs │ │ └── app.config │ ├── PropertyGridDemo │ │ ├── .gitignore │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Converters │ │ │ ├── BigIntegerConverter.cs │ │ │ ├── ComplexConverter.cs │ │ │ ├── HexConverter.cs │ │ │ ├── MassConverter.cs │ │ │ └── MultiValueToStringConverter.cs │ │ ├── CustomControlFactory.cs │ │ ├── CustomOperator.cs │ │ ├── DataTypes │ │ │ ├── Length.cs │ │ │ ├── Mass.cs │ │ │ ├── TestEnumeration.cs │ │ │ └── UnitUtilities.cs │ │ ├── Example.cs │ │ ├── Examples.cs │ │ ├── Examples │ │ │ ├── AdvancedTypesExample.cs │ │ │ ├── AutoUpdateTextAttributeExample.cs │ │ │ ├── AutomaticDisplayNamesExample.cs │ │ │ ├── BrowsableAttributeExample.cs │ │ │ ├── BrowsableFalseAttributeExample.cs │ │ │ ├── BrowsableTrueAttributeExample.cs │ │ │ ├── CategoryAttributeExample.cs │ │ │ ├── CheckableItemsAttributeExample.cs │ │ │ ├── CollectionsExample.cs │ │ │ ├── CommandExample.cs │ │ │ ├── CommentAttributeExample.cs │ │ │ ├── ContentAttributeExample.cs │ │ │ ├── ConverterAttributeExample.cs │ │ │ ├── DataAnnotationsExample.cs │ │ │ ├── DataErrorInfoExample.cs │ │ │ ├── DataTypeAttributeExample.cs │ │ │ ├── DescriptionAttributeExample.cs │ │ │ ├── DictionaryExample.cs │ │ │ ├── DirectoryPathAttributeExample.cs │ │ │ ├── DisplayNameAttributeExample.cs │ │ │ ├── EditableAttributeExample.cs │ │ │ ├── EnableByRadioButtonAttributeExample.cs │ │ │ ├── EnabledByAttributeExample.cs │ │ │ ├── EnumsExample.cs │ │ │ ├── ExceptionExample.cs │ │ │ ├── FilePathAttributeExample.cs │ │ │ ├── FillTabAttributeExample.cs │ │ │ ├── FormatStringAttributeExample.cs │ │ │ ├── HeaderPlacementAttributeExample.cs │ │ │ ├── ImageSourceExample.cs │ │ │ ├── IndentationLevelAttributeExample.cs │ │ │ ├── ItemsSourcePropertyExample.cs │ │ │ ├── MetaDataTypeExample.cs │ │ │ ├── NotifyDataErrorInfoExample.cs │ │ │ ├── NotifyDataErrorInfoSeverityExample.cs │ │ │ ├── OptionEnableByAttributeExample.cs │ │ │ ├── OptionalAttributeExample.cs │ │ │ ├── PasswordExample.cs │ │ │ ├── PerformanceExample.cs │ │ │ ├── ReadOnlyAttributeExample.cs │ │ │ ├── ReadOnlyExample.cs │ │ │ ├── SimpleTypesExample.cs │ │ │ ├── SlidableAttributeExample.cs │ │ │ ├── SpinnableAttributeExample.cs │ │ │ ├── SubClassExample.cs │ │ │ ├── VisibleByAttributeExample.cs │ │ │ └── sheep.png │ │ ├── FodyWeavers.xml │ │ ├── Images │ │ │ ├── category.png │ │ │ ├── chart.png │ │ │ ├── error.png │ │ │ ├── home.png │ │ │ ├── home2.png │ │ │ ├── home3.png │ │ │ ├── lightbulb.png │ │ │ ├── lightbulb1.png │ │ │ └── sheep.png │ │ ├── LengthConverter.cs │ │ ├── MainViewModel.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── PropertyGridDemo.csproj │ │ ├── PropertyGridExampleAttribute.cs │ │ ├── Validation │ │ │ └── ValidationResultEx.cs │ │ └── app.config │ ├── PropertyGridDemos │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Examples │ │ │ ├── DataGridExample.xaml │ │ │ ├── DataGridExample.xaml.cs │ │ │ ├── DataGridFactoryExample.xaml │ │ │ ├── DataGridFactoryExample.xaml.cs │ │ │ ├── GettingStartedExample.xaml │ │ │ ├── GettingStartedExample.xaml.cs │ │ │ ├── WinFormsComparisonExample.xaml │ │ │ └── WinFormsComparisonExample.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── PropertyGridDemos.csproj │ ├── SimpleDemo │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── MainWindowViewModel.cs │ │ ├── Mass.cs │ │ ├── MassConverter.cs │ │ ├── Person.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── SimpleDemo.csproj │ │ └── app.config │ └── UndoRedoDemo │ │ ├── App.xaml │ │ ├── AppBootstrapper.cs │ │ ├── Core │ │ ├── DelegateTraceListener.cs │ │ ├── UndoableCollection.cs │ │ └── UndoableObject.cs │ │ ├── Model │ │ └── Measurement.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── UndoRedo │ │ ├── CollectionChangeUndoRedoAction.cs │ │ ├── IUndoRedoAction.cs │ │ ├── PropertyChangeUndoRedoAction.cs │ │ └── UndoRedoService.cs │ │ ├── UndoRedoDemo.csproj │ │ ├── ViewModels │ │ └── ShellViewModel.cs │ │ ├── Views │ │ ├── ShellView.xaml │ │ └── TextBoxBehaviors.cs │ │ └── app.config └── TreeListBox │ ├── AddRemoveDemo │ ├── AddRemoveDemo.csproj │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── MainWindowViewModel.cs │ ├── Node.cs │ └── Properties │ │ └── AssemblyInfo.cs │ ├── DirectoryDemo │ ├── App.xaml │ ├── App.xaml.cs │ ├── DirectoryDemo.csproj │ ├── DirectoryViewModel.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── app.config │ └── folder.png │ └── TreeListBoxDemo │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Model │ ├── CompositeNode.cs │ └── Node.cs │ ├── Properties │ └── AssemblyInfo.cs │ ├── TreeListBoxDemo.csproj │ ├── ViewModel │ ├── MainViewModel.cs │ ├── NodeViewModel.cs │ └── Observable.cs │ ├── app.config │ └── folder.png ├── PropertyTools.Wpf.ExtendedToolkit ├── ExtendedToolkitDataGridControlFactory.cs ├── Properties │ └── AssemblyInfo.cs └── PropertyTools.Wpf.Extended.Toolkit.csproj ├── PropertyTools.Wpf.Tests ├── Comparers │ └── NaturalStringComparerTests.cs ├── Converters │ ├── ConverterTests.cs │ └── ValueToBooleanConverterTests.cs ├── Extensions │ └── ReflectionExtensionsTests.cs ├── Helpers │ ├── ColorHelperTests.cs │ ├── FormattedTimeSpanParserTests.cs │ ├── ReflectionMathTests.cs │ ├── TimeSpanFormatterTests.cs │ ├── TimeSpanParserTests.cs │ └── TypeHelperTests.cs ├── ItemsBag │ └── ItemsBagTests.cs └── PropertyTools.Wpf.Tests.csproj ├── PropertyTools.Wpf ├── Behaviors │ ├── ScreenGrab.cs │ └── WebBrowserBehavior.cs ├── Chrome │ ├── ButtonChrome.cs │ └── SystemDropShadowChrome.cs ├── CommandBindings │ ├── DelegateCommandBinding.cs │ └── DelegateCommandBinding{T}.cs ├── Commands │ └── DelegateCommand.cs ├── Comparers │ ├── EnumerableComparer{T}.cs │ ├── ISortDescriptionComparer.cs │ ├── NaturalObjectComparer.cs │ ├── NaturalSortDescriptionComparer.cs │ └── NaturalStringComparer.cs ├── Controls │ ├── Bitmap.cs │ ├── CheckMark │ │ ├── CheckMark.cs │ │ └── Generic.xaml │ ├── ColorPicker │ │ ├── ColorPicker.cs │ │ ├── ColorPicker.png │ │ ├── ColorPickerPanel.cs │ │ ├── ColorPickerPanelStrings.cs │ │ ├── ColorSlider.cs │ │ ├── Generic.xaml │ │ ├── Hsv.png │ │ ├── HsvControl.cs │ │ └── SpectrumSlider.cs │ ├── DockPanelSplitter │ │ ├── DockPanelSplitter.cs │ │ └── Generic.xaml │ ├── EditableTextBlock.cs │ ├── EnumMenuItem.cs │ ├── FilePicker │ │ ├── DirectoryPicker.cs │ │ ├── FilePicker.cs │ │ ├── Generic.xaml │ │ ├── IFileDialogService.cs │ │ └── IFolderBrowserDialogService.cs │ ├── FormattingTextBox.cs │ ├── HeaderedEntrySlider │ │ ├── Generic.xaml │ │ └── HeaderedEntrySlider.cs │ ├── LinkBlock.cs │ ├── PopupBox │ │ ├── Generic.xaml │ │ └── PopupBox.cs │ ├── RadioButtonList │ │ ├── Generic.xaml │ │ └── RadioButtonList.cs │ ├── SliderEx.cs │ ├── SpinControl │ │ ├── Generic.xaml │ │ └── SpinControl.cs │ ├── StackPanelEx.cs │ ├── TextBlockEx │ │ ├── Generic.xaml │ │ └── TextBlockEx.cs │ └── TextBoxEx.cs ├── Converters │ ├── AllMultiValueConverter.cs │ ├── BoolToVisibilityConverter.cs │ ├── BrushToColorConverter.cs │ ├── ColorToBrushConverter.cs │ ├── ColorToComponentConverter.cs │ ├── ColorToHexConverter.cs │ ├── ColorToStringConverter.cs │ ├── DataErrorInfoConverter.cs │ ├── DefinedColorToVisibilityConverter.cs │ ├── DoubleToGridLengthConverter.cs │ ├── EnumDescriptionConverter.cs │ ├── EnumToBooleanConverter.cs │ ├── EnumValuesConverter.cs │ ├── FontFamilyConverter.cs │ ├── GridLengthCollectionConverter.cs │ ├── HueToColorConverter.cs │ ├── NotifyDataErrorInfoConverter.cs │ ├── NullToBoolConverter.cs │ ├── NullToVisibilityConverter.cs │ ├── ObjectToDoubleConverter.cs │ ├── SelfProvider.cs │ ├── TimeSpanToStringConverter.cs │ ├── ValidationErrorsToStringConverter.cs │ ├── ValueToBooleanConverter.cs │ ├── ValueToVisibilityConverter.cs │ └── ZeroToVisibilityConverter.cs ├── DataGrid │ ├── CellDefinitions │ │ ├── CellDefinition.cs │ │ ├── CellDefinitionFactory.cs │ │ ├── CellDescriptor.cs │ │ ├── CheckCellDefinition.cs │ │ ├── ColorCellDefinition.cs │ │ ├── SelectorCellDefinition.cs │ │ ├── TemplateCellDefinition.cs │ │ └── TextCellDefinition.cs │ ├── CellRange.cs │ ├── CellRef.cs │ ├── CellRefConverter.cs │ ├── ControlFactories │ │ └── DataGridControlFactory.cs │ ├── Cursors │ │ ├── AutoFill.cur │ │ ├── Cross.cur │ │ ├── DownArrow.cur │ │ └── RightArrow.cur │ ├── DataGrid.cs │ ├── DataGrid.md │ ├── DataGridCommands.cs │ ├── Definitions │ │ ├── ColumnDefinition.cs │ │ ├── PropertyDefinition.cs │ │ ├── RowDefinition.cs │ │ └── TemplateColumnDefinition.cs │ ├── Generic.xaml │ ├── ICellDefinitionFactory.cs │ ├── IDataGridControlFactory.cs │ ├── IDataGridOperator.cs │ ├── Operators │ │ ├── DataGridOperator.cs │ │ ├── ListListOperator.cs │ │ ├── ListOperator.cs │ │ └── WrapItemsOperator.cs │ └── VisibilityConverter.cs ├── Dialogs │ ├── AboutDialog.xaml │ ├── AboutDialog.xaml.cs │ ├── AboutViewModel.cs │ ├── PropertyDialog.xaml │ ├── PropertyDialog.xaml.cs │ ├── Shell32 │ │ └── BrowseForFolderDialog.cs │ ├── WizardDialog.xaml │ └── WizardDialog.xaml.cs ├── Extensions │ └── ReflectionExtensions.cs ├── Helpers │ ├── AutoFiller.cs │ ├── CaptureScreenshot.cs │ ├── ColorHelper.cs │ ├── FormattedTimeSpanParser.cs │ ├── PasswordHelper.cs │ ├── ReflectionMath.cs │ ├── TimeSpanFormatter.cs │ ├── TimeSpanParser.cs │ └── TypeHelper.cs ├── ItemsBag │ ├── ItemsBag.cs │ ├── ItemsBagPropertyDescriptor.cs │ ├── ItemsBagTypeDescriptionProvider.cs │ └── ItemsBagTypeDescriptor.cs ├── Properties │ └── AssemblyInfo.cs ├── PropertyGrid │ ├── CategoryControlType.cs │ ├── Generic.xaml │ ├── Group.cs │ ├── IPropertyGridControlFactory.cs │ ├── IPropertyGridOperator.cs │ ├── IPropertyGridOptions.cs │ ├── PropertyControlFactoryOptions.cs │ ├── PropertyConverter.cs │ ├── PropertyGrid.cs │ ├── PropertyGridControlFactory.cs │ ├── PropertyGridOperator.cs │ ├── PropertyItem.cs │ ├── Tab.cs │ └── TypeEditor.cs ├── PropertyTools.Wpf.csproj ├── PropertyTools.Wpf.csproj.DotSettings ├── PropertyTools.snk ├── Themes │ └── Generic.xaml ├── TreeListBox │ ├── Common.xaml │ ├── Generic.xaml │ ├── InsertionAdorner.cs │ ├── TreeListBox.cs │ ├── TreeListBoxAutomationPeer.cs │ ├── TreeListBoxDragDropHelper.cs │ └── TreeListBoxItem.cs └── Utilities │ ├── BindingUtilities.cs │ └── StringUtilities.cs ├── PropertyTools.sln ├── PropertyTools.sln.DotSettings ├── PropertyTools.snk ├── PropertyTools ├── DataAnnotations │ ├── AutoUpdateTextAttribute.cs │ ├── BasePathPropertyAttribute.cs │ ├── BrowsableAttribute.cs │ ├── CategoryAttribute.cs │ ├── CheckableItemsAttribute.cs │ ├── Column.cs │ ├── ColumnsPropertyAttribute.cs │ ├── CommentAttribute.cs │ ├── ContentAttribute.cs │ ├── ConverterAttribute.cs │ ├── DefaultExtensionPropertyAttribute.cs │ ├── DescriptionAttribute.cs │ ├── DirectoryPathAttribute.cs │ ├── DisplayMemberPathAttribute.cs │ ├── DisplayNameAttribute.cs │ ├── EasyInsertAttribute.cs │ ├── EditableAttribute.cs │ ├── EnableByAttribute.cs │ ├── EnableByRadioButtonAttribute.cs │ ├── FillTabAttribute.cs │ ├── FilterPropertyAttribute.cs │ ├── FontAttribute.cs │ ├── FontFamilySelectorAttribute.cs │ ├── FontPreviewAttribute.cs │ ├── FormatStringAttribute.cs │ ├── HeaderPlacement.cs │ ├── HeaderPlacementAttribute.cs │ ├── HeightAttribute.cs │ ├── HorizontalAlignment.cs │ ├── HorizontalAlignmentAttribute.cs │ ├── IndentationLevelAttribute.cs │ ├── InputDirection.cs │ ├── InputDirectionAttribute.cs │ ├── InputFilePathAttribute.cs │ ├── ItemHeaderPropertyAttribute.cs │ ├── ItemsSourcePropertyAttribute.cs │ ├── ListAttribute.cs │ ├── ListItemItemsSourcePropertyAttribute.cs │ ├── OptionEnableByAttribute.cs │ ├── OptionalAttribute.cs │ ├── OutputFilePathAttribute.cs │ ├── ReadOnlyAttribute.cs │ ├── ResettableAttribute.cs │ ├── SelectedValuePathAttribute.cs │ ├── SelectorStyle.cs │ ├── SelectorStyleAttribute.cs │ ├── SlidableAttribute.cs │ ├── SortIndexAttribute.cs │ ├── SpinnableAttribute.cs │ ├── VisibleByAttribute.cs │ ├── WidePropertyAttribute.cs │ └── WidthAttribute.cs ├── DragDrop │ ├── DropPosition.cs │ ├── IDragSource.cs │ └── IDropTarget.cs ├── Observable │ └── Observable.cs ├── PropertyTools.csproj ├── PropertyTools.csproj.DotSettings └── PropertyTools.snk └── Settings.SourceAnalysis /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=crlf 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.github/no-response.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-no-response - https://github.com/probot/no-response 2 | 3 | # Number of days of inactivity before an Issue is closed for lack of response 4 | daysUntilClose: 14 5 | # Label requiring a response 6 | responseRequiredLabel: need more info 7 | # Comment to post when closing an Issue for lack of response. Set to `false` to disable 8 | closeComment: > 9 | This issue has been automatically closed because there has been no response 10 | to our request for more information from the original author. With only the 11 | information that is currently in the issue, we don't have enough information 12 | to take action. Please reach out if you have or find the answers we need so 13 | that we can investigate further. 14 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: .NET Core Desktop 2 | 3 | on: 4 | push: 5 | branches: [ "main", "develop" ] 6 | pull_request: 7 | branches: [ "develop" ] 8 | 9 | jobs: 10 | build: 11 | runs-on: windows-latest 12 | 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v3 16 | with: 17 | fetch-depth: 0 18 | 19 | # Install the .NET Core workload 20 | - name: Install .NET Core 21 | uses: actions/setup-dotnet@v3 22 | with: 23 | dotnet-version: 6.0.x 24 | 25 | # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild 26 | - name: Setup MSBuild.exe 27 | uses: microsoft/setup-msbuild@v1.0.2 28 | 29 | - name: Execute unit tests 30 | run: dotnet test Source\PropertyTools.sln 31 | 32 | - name: Restore the application 33 | run: msbuild Source\PropertyTools.sln /t:Restore /p:Configuration=Release 34 | 35 | - uses: actions/upload-artifact@v4 36 | with: 37 | name: nupkgs 38 | path: Source/**/*.nupkg 39 | -------------------------------------------------------------------------------- /.github/workflows/devskim.yml: -------------------------------------------------------------------------------- 1 | # This workflow uses actions that are not certified by GitHub. 2 | # They are provided by a third-party and are governed by 3 | # separate terms of service, privacy policy, and support 4 | # documentation. 5 | 6 | name: DevSkim 7 | 8 | on: 9 | push: 10 | branches: [ "develop", "main" ] 11 | pull_request: 12 | branches: [ "develop" ] 13 | schedule: 14 | - cron: '29 2 * * 0' 15 | 16 | jobs: 17 | lint: 18 | name: DevSkim 19 | runs-on: ubuntu-20.04 20 | permissions: 21 | actions: read 22 | contents: read 23 | security-events: write 24 | steps: 25 | - name: Checkout code 26 | uses: actions/checkout@v3 27 | 28 | - name: Run DevSkim scanner 29 | uses: microsoft/DevSkim-Action@v1 30 | 31 | - name: Upload DevSkim scan results to GitHub Security tab 32 | uses: github/codeql-action/upload-sarif@v2 33 | with: 34 | sarif_file: devskim-results.sarif 35 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. 2 | # 3 | # You can adjust the behavior by modifying this file. 4 | # For more information, see: 5 | # https://github.com/actions/stale 6 | name: Mark stale issues and pull requests 7 | 8 | on: 9 | schedule: 10 | - cron: '39 1 * * *' 11 | 12 | jobs: 13 | stale: 14 | 15 | runs-on: ubuntu-latest 16 | permissions: 17 | issues: write 18 | pull-requests: write 19 | 20 | steps: 21 | - uses: actions/stale@v5 22 | with: 23 | repo-token: ${{ secrets.GITHUB_TOKEN }} 24 | stale-issue-message: 'Stale issue message' 25 | stale-pr-message: 'Stale pull request message' 26 | stale-issue-label: 'no-issue-activity' 27 | stale-pr-label: 'no-pr-activity' 28 | days-before-close: 9999 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vs/ 2 | bin/ 3 | obj/ 4 | packages/ 5 | *.user 6 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | # This is the official list of OxyPlot authors for copyright purposes. 2 | # This file is distinct from the CONTRIBUTORS file. 3 | # See the latter for an explanation. 4 | 5 | # Names should be added to this file as 6 | # Name or Organization 7 | # The email address is not required for organizations. 8 | 9 | # Please keep the list sorted. 10 | 11 | DNV AS 12 | Jeremy Liu 13 | Jonathan Arweck 14 | Oystein Bjorke 15 | Per Malmberg 16 | Ray Lu 17 | Sainyam Chandra 18 | -------------------------------------------------------------------------------- /CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This is the official list of people who have contributed 2 | # to the PropertyTools repository. 3 | # The AUTHORS file lists the copyright holders; this file 4 | # lists people. 5 | 6 | # People submitting code should be listed in this file (by email address). 7 | 8 | # Names should be added to this file like so: 9 | # Name 10 | 11 | # Please keep the list sorted. 12 | 13 | Aldinei Sampaio 14 | Cyril Pyfferoen 15 | Declan Taylor 16 | Jeremy Liu 17 | Jochen Kühner 18 | Jonathan Arweck 19 | Kim Jiho 20 | 山本 洋介 21 | Oystein Bjorke 22 | Per Malmberg 23 | Ray Lu 24 | Roland König 25 | Sainyam Chandra 26 | verybadsoldier 27 | William Dibbern 28 | Zoltan Rajnai 29 | Travis Robinson 30 | -------------------------------------------------------------------------------- /GitVersion.yml: -------------------------------------------------------------------------------- 1 | branches: {} 2 | -------------------------------------------------------------------------------- /Images/AboutDialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Images/AboutDialog.png -------------------------------------------------------------------------------- /Images/ColorPicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Images/ColorPicker.png -------------------------------------------------------------------------------- /Images/ColorPicker2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Images/ColorPicker2.png -------------------------------------------------------------------------------- /Images/DataGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Images/DataGrid.png -------------------------------------------------------------------------------- /Images/PropertyDialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Images/PropertyDialog.png -------------------------------------------------------------------------------- /Images/PropertyGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Images/PropertyGrid.png -------------------------------------------------------------------------------- /Images/TreeListBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Images/TreeListBox.png -------------------------------------------------------------------------------- /Images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Images/icon.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 PropertyTools contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a 6 | copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included 14 | in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Source/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Reflection; 8 | 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyProduct("PropertyTools for WPF")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyCopyright("Copyright (C) PropertyTools contributors 2014.")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | [assembly: AssemblyVersion("0.0.0.0")] 17 | [assembly: AssemblyInformationalVersion("0.0.0.0")] 18 | [assembly: AssemblyFileVersion("0.0.0.0")] -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace ControlDemos 11 | { 12 | using System.Windows; 13 | 14 | /// 15 | /// Interaction logic for App.xaml 16 | /// 17 | public class App : Application 18 | { 19 | } 20 | } -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/ControlDemos.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | WinExe 5 | true 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/ControlDemos.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for MainWindow.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace ControlDemos 11 | { 12 | /// 13 | /// Interaction logic for MainWindow.xaml 14 | /// 15 | public partial class MainWindow 16 | { 17 | public MainWindow() 18 | { 19 | this.InitializeComponent(); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/CheckMarkPage.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/CheckMarkPage.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for CheckMarkPage 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace ControlDemos 11 | { 12 | /// 13 | /// Interaction logic for CheckMarkPage 14 | /// 15 | public partial class CheckMarkPage 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | public CheckMarkPage() 21 | { 22 | this.InitializeComponent(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/DirectoryPickerPage.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/DockPanelSplitterPage.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for DockPanelSplitterPage.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace ControlDemos 11 | { 12 | using System.Windows.Controls; 13 | 14 | /// 15 | /// Interaction logic for DockPanelSplitterPage.xaml 16 | /// 17 | public partial class DockPanelSplitterPage : Page 18 | { 19 | public DockPanelSplitterPage() 20 | { 21 | this.InitializeComponent(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/EnumMenuItemPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/LinkBlockPage.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | Google 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/LinkBlockPage.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for LinkBlockPage 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace ControlDemos 11 | { 12 | /// 13 | /// Interaction logic for CheckMarkPage 14 | /// 15 | public partial class LinkBlockPage 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | public LinkBlockPage() 21 | { 22 | this.InitializeComponent(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/PopupBoxPage.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for PopupBoxPage.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace ControlDemos 11 | { 12 | using System.Windows.Controls; 13 | 14 | /// 15 | /// Interaction logic for PopupBoxPage.xaml 16 | /// 17 | public partial class PopupBoxPage : Page 18 | { 19 | public PopupBoxPage() 20 | { 21 | this.InitializeComponent(); 22 | } 23 | } 24 | 25 | public class Person 26 | { 27 | public string Name { get; set; } 28 | public string Address { get; set; } 29 | } 30 | } -------------------------------------------------------------------------------- /Source/Examples/Controls/ControlDemos/Pages/RadioButtonListPage.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/LargeCollectionWpfExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/LargeCollectionWpfExample.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace DataGridDemo 2 | { 3 | public partial class LargeCollectionWpfExample 4 | { 5 | public LargeCollectionWpfExample() 6 | { 7 | this.InitializeComponent(); 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfIntExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfList/ListOfListExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfList/ListOfListOfBoolExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfList/ListOfListOfColorExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfList/ListOfListOfFruitExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfList/ListOfListOfIntExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfList/ListOfListOfMassExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfMassExample.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfObjectExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfPlainObjectCustomColumnsExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfPlainObjectExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfStringExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ListOfVectorExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/NaturalSortingExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/NullExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/NullableExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ObservableCollectionOfDoubleExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ObservableCollectionOfExampleObjectExample.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ObservableCollectionOfExampleObjectExample.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for ObservableObjectExample. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace DataGridDemo 11 | { 12 | /// 13 | /// Interaction logic for ObservableObjectExample. 14 | /// 15 | public partial class ObservableCollectionOfExampleObjectExample 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | public ObservableCollectionOfExampleObjectExample() 21 | { 22 | this.InitializeComponent(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ObservableCollectionOfMassExample.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ObservableCollectionOfStringExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/RelativeWidthExample.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/RelativeWidthExample.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for RelativeWidthExample. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace DataGridDemo 11 | { 12 | /// 13 | /// Interaction logic for RelativeWidthExample. 14 | /// 15 | public partial class RelativeWidthExample 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | public RelativeWidthExample() 21 | { 22 | this.InitializeComponent(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ScrollViewerExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/SelectedItemsExample.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for SelectedItemsExample. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace DataGridDemo 11 | { 12 | /// 13 | /// Interaction logic for SelectedItemsExample. 14 | /// 15 | public partial class SelectedItemsExample 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | public SelectedItemsExample() 21 | { 22 | this.InitializeComponent(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/SelectorExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/StandardDataGrid/GettingStartedExample.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for GettingStartedExample. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace DataGridDemo.StandardDataGrid 11 | { 12 | /// 13 | /// Interaction logic for GettingStartedExample. 14 | /// 15 | public partial class GettingStartedExample 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | public GettingStartedExample() 21 | { 22 | this.InitializeComponent(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/SyncTableExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/TableExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/TemplateExample.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for TemplateExample. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace DataGridDemo 11 | { 12 | /// 13 | /// Interaction logic for TemplateExample. 14 | /// 15 | public partial class TemplateExample 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | public TemplateExample() 21 | { 22 | this.InitializeComponent(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/ValidationExampleWindow.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/VectorExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WpfDataGridExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WpfDataGridExample.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace DataGridDemo 2 | { 3 | public partial class WpfDataGridExample 4 | { 5 | public WpfDataGridExample() 6 | { 7 | this.InitializeComponent(); 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WrapItems/ArrayOfObjectExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WrapItems/BackgroundBindingSourceExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WrapItems/IsEnabledBindingSourceExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WrapItems/MultitypeMatrixExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WrapItems/ObservableCollectionOfObjectExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WrapItems/WrapItemsExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WrapItems/WrapItemsExample.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for WrapItemsExample.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace DataGridDemo 11 | { 12 | /// 13 | /// Interaction logic for WrapItemsExample.xaml 14 | /// 15 | public partial class WrapItemsExample 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | public WrapItemsExample() 21 | { 22 | this.InitializeComponent(); 23 | this.ItemsSource = new[] { 11.0, 12, 13, 21, 22, 23, 31, 32, 33 }; 24 | this.DataContext = this; 25 | } 26 | 27 | /// 28 | /// Gets or sets the items. 29 | /// 30 | public double[] ItemsSource { get; set; } 31 | } 32 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Examples/WrapItems/WrapItemsOfMassExample.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Model/Fruit.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Specifies fruits. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace DataGridDemo 11 | { 12 | /// 13 | /// Specifies fruits. 14 | /// 15 | public enum Fruit 16 | { 17 | Apple, 18 | Pear, 19 | Banana, 20 | Orange, 21 | Kiwi 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/DataGrid/DataGridDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/ItemsBag/ItemsBagDemo/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Examples/ItemsBag/ItemsBagDemo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Configuration; 13 | using System.Windows; 14 | 15 | namespace ItemsBagDemo 16 | { 17 | /// 18 | /// Interaction logic for App.xaml 19 | /// 20 | public partial class App : Application 21 | { 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/ItemsBag/ItemsBagDemo/ItemsBagDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | WinExe 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/ItemsBag/ItemsBagDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/ItemsBag/ItemsBagDemo/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace CustomFactoryDemo 11 | { 12 | /// 13 | /// Interaction logic for App.xaml 14 | /// 15 | public partial class App 16 | { 17 | } 18 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/Attributes/ImportantAttribute.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Specifies that the decorated property is important. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace CustomFactoryDemo 11 | { 12 | using System; 13 | 14 | /// 15 | /// Specifies that the decorated property is important. 16 | /// 17 | [AttributeUsage(AttributeTargets.Property)] 18 | public class ImportantAttribute : Attribute 19 | { 20 | } 21 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/CustomFactoryDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | WinExe 6 | PropertyGrid custom control factory demo 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/Model/Range.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace CustomFactoryDemo 8 | { 9 | public class Range 10 | { 11 | public double Minimum { get; set; } 12 | public double Maximum { get; set; } 13 | 14 | public override string ToString() 15 | { 16 | return string.Format("{0} - {1}", this.Minimum, this.Maximum); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/Model/TestObject.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace CustomFactoryDemo 8 | { 9 | public class TestObject 10 | { 11 | public string Title { get; set; } 12 | 13 | [Important] 14 | public Range Range1 { get; set; } 15 | 16 | public Range Range2 { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/ViewModels/MainViewModel.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace CustomFactoryDemo 8 | { 9 | public class MainViewModel 10 | { 11 | public TestObject TestObject { get; set; } 12 | 13 | public CustomPropertyGridControlFactory CustomPropertyGridControlFactory { get; set; } 14 | 15 | public CustomPropertyGridOperator CustomPropertyGridOperator { get; set; } 16 | 17 | public MainViewModel() 18 | { 19 | this.CustomPropertyGridControlFactory = new CustomPropertyGridControlFactory(); 20 | this.CustomPropertyGridOperator = new CustomPropertyGridOperator(); 21 | this.TestObject = new TestObject { Title = "Title", Range1 = new Range { Minimum = 0, Maximum = 100 } }; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/Views/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/Views/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for MainWindow.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace CustomFactoryDemo 11 | { 12 | /// 13 | /// Interaction logic for MainWindow.xaml 14 | /// 15 | public partial class MainWindow 16 | { 17 | public MainWindow() 18 | { 19 | this.InitializeComponent(); 20 | this.DataContext = new MainViewModel(); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/CustomFactoryDemo/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/.gitignore: -------------------------------------------------------------------------------- 1 | FodyWeavers.xsd 2 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Configuration; 13 | using System.Windows; 14 | 15 | namespace PropertyGridDemo 16 | { 17 | /// 18 | /// Interaction logic for App.xaml 19 | /// 20 | public partial class App : Application 21 | { 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/CustomOperator.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace PropertyGridDemo 8 | { 9 | using PropertyTools.Wpf; 10 | 11 | public class CustomOperator : PropertyGridOperator 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/DataTypes/TestEnumeration.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | public enum TestEnumeration { Red, Green, Blue } 10 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Example.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Base class for examples. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace ExampleLibrary 11 | { 12 | using System.ComponentModel; 13 | 14 | /// 15 | /// Base class for examples. 16 | /// 17 | /// This class depends on the NotifyPropertyWeaver task. 18 | /// All INotifyPropertyChanged events will be weaved into the code as a post-compile build step. 19 | public class Example : INotifyPropertyChanged 20 | { 21 | #pragma warning disable 67 22 | public event PropertyChangedEventHandler PropertyChanged; 23 | #pragma warning restore 67 24 | 25 | public override string ToString() 26 | { 27 | return this.GetType().Name.Replace("Example", ""); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/AutoUpdateTextAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class AutoUpdateTextAttributeExample : Example 13 | { 14 | [AutoUpdateText] 15 | public string Text { get; set; } 16 | 17 | [AutoUpdateText] 18 | public double Number { get; set; } 19 | } 20 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/AutomaticDisplayNamesExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | [PropertyGridExample] 10 | public class AutomaticDisplayNamesExample : Example 11 | { 12 | public string FirstName { get; set; } 13 | public string PositionX { get; set; } 14 | public string PositionXYZ { get; set; } 15 | public string XYZ { get; set; } 16 | } 17 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/BrowsableAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class BrowsableAttributeExample : Example 13 | { 14 | [Category("No attribute")] 15 | public string Default { get; set; } 16 | 17 | [Category("System.ComponentModel (not portable)")] 18 | [System.ComponentModel.Browsable(true)] 19 | public string Browsable1 { get; set; } 20 | 21 | [System.ComponentModel.Browsable(false)] 22 | public string NotBrowsable1 { get; set; } 23 | 24 | [Category("PropertyTools.DataAnnotations (portable)")] 25 | [Browsable(true)] 26 | public string Browsable2 { get; set; } 27 | 28 | [Browsable(false)] 29 | public string NotBrowsable2 { get; set; } 30 | } 31 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/BrowsableFalseAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class BrowsableFalseAttributeExample : Example 13 | { 14 | [Category("System.ComponentModel (not portable)")] 15 | public string Browsable1 { get; set; } 16 | 17 | [System.ComponentModel.Browsable(false)] 18 | public string NotBrowsable1 { get; set; } 19 | 20 | [Category("PropertyTools.DataAnnotations (portable)")] 21 | public string Browsable2 { get; set; } 22 | 23 | [Browsable(false)] 24 | public string NotBrowsable2 { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/BrowsableTrueAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class BrowsableTrueAttributeExample : Example 13 | { 14 | [Category("System.ComponentModel (not portable)")] 15 | [System.ComponentModel.Browsable(true)] 16 | public string Browsable1 { get; set; } 17 | 18 | public string NotBrowsable1 { get; set; } 19 | 20 | [Category("PropertyTools.DataAnnotations (portable)")] 21 | [Browsable(true)] 22 | public string Browsable2 { get; set; } 23 | 24 | public string NotBrowsable2 { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/CommandExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using System.Windows.Input; 10 | using PropertyTools.Wpf; 11 | 12 | [PropertyGridExample] 13 | public class CommandExample : Example 14 | { 15 | public CommandExample() 16 | { 17 | BasicCommand = new DelegateCommand(() => { this.ExecuteCount++; }); 18 | Command = new DelegateCommand(() => { this.ExecuteCount++; }, () => CanExecute); 19 | } 20 | 21 | public ICommand BasicCommand { get; } 22 | 23 | public ICommand Command { get; } 24 | 25 | public bool CanExecute { get; set; } 26 | 27 | public int ExecuteCount { get; set; } 28 | } 29 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/DescriptionAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class DescriptionAttributeExample : Example 13 | { 14 | [Category("No attribute")] 15 | public string Property1 { get; set; } 16 | 17 | [Category("System.ComponentModel")] 18 | [System.ComponentModel.Description("Customized description (Property2)")] 19 | public string Property2 { get; set; } 20 | 21 | [Category("PropertyTools.DataAnnotations")] 22 | [Description("Customized description (Property3)")] 23 | public string Property3 { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/DictionaryExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using System.Collections.Generic; 10 | using System.ComponentModel; 11 | 12 | [PropertyGridExample] 13 | public class DictionaryExample : Example 14 | { 15 | [Description("This is not yet working.")] 16 | public Dictionary Dictionary { get; set; } = new Dictionary(); 17 | } 18 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/DirectoryPathAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class DirectoryPathAttributeExample : Example 13 | { 14 | [DirectoryPath] 15 | [AutoUpdateText] 16 | public string DirectoryPath { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/EditableAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | [PropertyGridExample] 10 | public class EditableAttributeExample : Example 11 | { 12 | [System.ComponentModel.DataAnnotations.Editable(true)] 13 | public string Editable { get; set; } 14 | 15 | [System.ComponentModel.DataAnnotations.Editable(false)] 16 | public string NotEditable { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/ExceptionExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using System; 10 | 11 | [PropertyGridExample] 12 | public class ExceptionExample : Example 13 | { 14 | public string Impossibilium 15 | { 16 | get 17 | { 18 | return "Corrrect me!"; 19 | } 20 | set 21 | { 22 | throw new InvalidOperationException("No way!"); 23 | } 24 | } 25 | 26 | public bool IsOK 27 | { 28 | get 29 | { 30 | return false; 31 | } 32 | set 33 | { 34 | throw new InvalidOperationException("No!"); 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/FillTabAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class FillTabAttributeExample : Example 13 | { 14 | [Category("Header|Group category is not shown!")] 15 | [FillTab] 16 | public string Text { get; set; } 17 | 18 | [Category("No header|Group category is not shown!")] 19 | [FillTab] 20 | [HeaderPlacement(HeaderPlacement.Collapsed)] 21 | public string Text2 { get; set; } 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/HeaderPlacementAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class HeaderPlacementAttributeExample : Example 13 | { 14 | [Category("HeaderPlacement.Above")] 15 | [HeaderPlacement(HeaderPlacement.Above)] 16 | [Height(100)] 17 | public string HeaderAbove { get; set; } 18 | 19 | [Category("HeaderPlacement.Collapsed")] 20 | [HeaderPlacement(HeaderPlacement.Collapsed)] 21 | [Height(100)] 22 | public string HeaderCollapsed { get; set; } 23 | 24 | [Category("HeaderPlacement.Left")] 25 | [HeaderPlacement(HeaderPlacement.Left)] 26 | [Height(100)] 27 | public string HeaderLeft { get; set; } 28 | } 29 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/MetaDataTypeExample.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleLibrary 2 | { 3 | using System.ComponentModel; 4 | using System.ComponentModel.DataAnnotations; 5 | 6 | [PropertyGridExample] 7 | [MetadataType(typeof(PersonMetadata))] 8 | public class MetaDataTypeExample : Example 9 | { 10 | public string FirstName { get; set; } 11 | 12 | public string LastName { get; set; } 13 | 14 | public int Age { get; set; } 15 | } 16 | 17 | public class PersonMetadata 18 | { 19 | [Category("Data")] 20 | [DisplayName("Given Name")] 21 | public string FirstName { get; set; } 22 | 23 | [DisplayName("Surname")] 24 | public string LastName { get; set; } 25 | 26 | [DisplayName("Years")] 27 | public int Age { get; set; } 28 | } 29 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/OptionEnableByAttributeExample.cs: -------------------------------------------------------------------------------- 1 | using PropertyTools.DataAnnotations; 2 | 3 | namespace ExampleLibrary 4 | { 5 | using System.ComponentModel; 6 | 7 | [PropertyGridExample] 8 | public class OptionEnableByAttributeExample : Example 9 | { 10 | public enum TestEnumeration 11 | { 12 | Red, 13 | [PropertyTools.DataAnnotations.OptionEnableBy("EnableGreenColorOption")] 14 | Green, 15 | Blue 16 | } 17 | 18 | [Category("Option enable by attribute")] 19 | [Description("Green color can be enabled or disabled by a 'Enable green color option'")] 20 | public TestEnumeration Color { get; set; } 21 | 22 | public bool EnableGreenColorOption{ get; set; } 23 | } 24 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/PasswordExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using System.ComponentModel.DataAnnotations; 10 | using System.Security; 11 | 12 | using PropertyTools.DataAnnotations; 13 | 14 | [PropertyGridExample] 15 | public class PasswordExample : Example 16 | { 17 | [DataType(DataType.Password)] 18 | public string Password { get; set; } 19 | 20 | [Description("This is not yet working.")] 21 | public SecureString SecureString { get; set; } 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/ReadOnlyExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using System; 10 | 11 | [PropertyGridExample] 12 | public class ReadOnlyExample : Example 13 | { 14 | public bool ReadOnlyBoolean => this.Boolean; 15 | public bool Boolean { get; set; } 16 | } 17 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/SlidableAttributeExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using PropertyTools.DataAnnotations; 10 | 11 | [PropertyGridExample] 12 | public class SlidableAttributeExample : Example 13 | { 14 | [Slidable(0, 360, 45, 1)] 15 | [FormatString("0.00")] 16 | public double Angle { get; set; } 17 | 18 | [Slidable(0, 360, 5, 1, true, 45)] 19 | [FormatString("{0:0}°")] 20 | public double AngleWithSnapping { get; set; } 21 | 22 | [Slidable(0, 365)] 23 | public int Days { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/SubClassExample.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace ExampleLibrary 8 | { 9 | using System.ComponentModel; 10 | 11 | [PropertyGridExample] 12 | public class SubClassExample : SuperClass 13 | { 14 | public string Name2 { get; set; } 15 | } 16 | 17 | public class SuperClass : Example 18 | { 19 | [Description("Check 'Show declared only' on the 'PropertyGrid' menu.")] 20 | [Category("SuperClass")] 21 | public string Name1 { get; set; } 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Examples/sheep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Examples/sheep.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/category.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/chart.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/error.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/home.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/home2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/home2.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/home3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/home3.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/lightbulb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/lightbulb.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/lightbulb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/lightbulb1.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Images/sheep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/PropertyGrid/PropertyGridDemo/Images/sheep.png -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for MainWindow.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyGridDemo 11 | { 12 | /// 13 | /// Interaction logic for MainWindow.xaml 14 | /// 15 | public partial class MainWindow 16 | { 17 | public MainWindow() 18 | { 19 | this.InitializeComponent(); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/PropertyGridDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | WinExe 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | all 14 | runtime; build; native; contentfiles; analyzers 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/PropertyGridExampleAttribute.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Used to identify PropertyGrid example classes. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace ExampleLibrary 11 | { 12 | using System; 13 | 14 | /// 15 | /// Used to identify PropertyGrid example classes. 16 | /// 17 | [AttributeUsage(AttributeTargets.Class)] 18 | public class PropertyGridExampleAttribute : Attribute 19 | { 20 | } 21 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemo/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyGridDemos 11 | { 12 | /// 13 | /// Interaction logic for App.xaml 14 | /// 15 | public partial class App 16 | { 17 | } 18 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/Examples/DataGridExample.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/Examples/DataGridFactoryExample.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/Examples/GettingStartedExample.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/Examples/WinFormsComparisonExample.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/PropertyGridDemos/PropertyGridDemos.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | true 6 | WinExe 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/SimpleDemo/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/SimpleDemo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Configuration; 13 | using System.Windows; 14 | 15 | namespace SimpleDemo 16 | { 17 | /// 18 | /// Interaction logic for App.xaml 19 | /// 20 | public partial class App : Application 21 | { 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/SimpleDemo/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/SimpleDemo/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for MainWindow.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Text; 13 | using System.Windows; 14 | using System.Windows.Controls; 15 | using System.Windows.Data; 16 | using System.Windows.Documents; 17 | using System.Windows.Input; 18 | using System.Windows.Media.Imaging; 19 | using System.Windows.Navigation; 20 | using System.Windows.Shapes; 21 | 22 | namespace SimpleDemo 23 | { 24 | /// 25 | /// Interaction logic for MainWindow.xaml 26 | /// 27 | public partial class MainWindow : Window 28 | { 29 | public MainWindow() 30 | { 31 | InitializeComponent(); 32 | this.DataContext = new MainWindowViewModel(); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/SimpleDemo/MainWindowViewModel.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace SimpleDemo 8 | { 9 | using System.Windows.Media; 10 | 11 | public class MainWindowViewModel 12 | { 13 | public Person SelectedPerson { get; set; } 14 | 15 | public MainWindowViewModel() 16 | { 17 | this.SelectedPerson = new Person 18 | { 19 | FirstName = "Anders", 20 | LastName = "Andersen", 21 | Age = 29, 22 | Gender = Genders.Male, 23 | Weight = new Mass { Value = 70 }, 24 | Height = 1.82, 25 | HairColor = Colors.Brown 26 | }; 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/SimpleDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/SimpleDemo/SimpleDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | WinExe 6 | PropertyGrid simple demo 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/SimpleDemo/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/UndoRedoDemo/App.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/UndoRedoDemo/AppBootstrapper.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace UndoRedoDemo 8 | { 9 | using System.Windows; 10 | using Caliburn.Micro; 11 | 12 | public class AppBootstrapper : BootstrapperBase 13 | { 14 | public AppBootstrapper() 15 | { 16 | this.Initialize(); 17 | } 18 | 19 | protected override async void OnStartup(object sender, StartupEventArgs e) 20 | { 21 | await this.DisplayRootViewForAsync(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/UndoRedoDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/UndoRedoDemo/UndoRedo/IUndoRedoAction.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace UndoRedoDemo 8 | { 9 | public interface IUndoRedoAction 10 | { 11 | IUndoRedoAction Execute(); 12 | } 13 | } -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/UndoRedoDemo/UndoRedoDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | WinExe 6 | PropertyGrid undo/redo demo 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/Examples/PropertyGrid/UndoRedoDemo/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/AddRemoveDemo/AddRemoveDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | WinExe 6 | TreeListBox add/remove demo 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/AddRemoveDemo/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/AddRemoveDemo/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/AddRemoveDemo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Configuration; 13 | using System.Threading.Tasks; 14 | using System.Windows; 15 | 16 | namespace AddRemoveDemo 17 | { 18 | /// 19 | /// Interaction logic for App.xaml 20 | /// 21 | public partial class App : Application 22 | { 23 | } 24 | } -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/AddRemoveDemo/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for MainWindow.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace AddRemoveDemo 11 | { 12 | using System.Windows; 13 | 14 | /// 15 | /// Interaction logic for MainWindow.xaml 16 | /// 17 | public partial class MainWindow : Window 18 | { 19 | public MainWindow() 20 | { 21 | this.InitializeComponent(); 22 | this.DataContext = new MainWindowViewModel(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/AddRemoveDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/DirectoryDemo/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/DirectoryDemo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Configuration; 13 | using System.Windows; 14 | 15 | namespace DirectoryDemo 16 | { 17 | /// 18 | /// Interaction logic for App.xaml 19 | /// 20 | public partial class App : Application 21 | { 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/DirectoryDemo/DirectoryDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | WinExe 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/DirectoryDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/DirectoryDemo/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/DirectoryDemo/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/TreeListBox/DirectoryDemo/folder.png -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Interaction logic for App.xaml 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Configuration; 13 | using System.Windows; 14 | 15 | namespace TreeListBoxDemo 16 | { 17 | /// 18 | /// Interaction logic for App.xaml 19 | /// 20 | public partial class App : Application 21 | { 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/Model/CompositeNode.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace TreeListBoxDemo 8 | { 9 | using System.Collections.Generic; 10 | 11 | public class CompositeNode : Node 12 | { 13 | public List Children { get; private set; } 14 | 15 | public CompositeNode() 16 | { 17 | Children = new List(); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/Model/Node.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace TreeListBoxDemo 8 | { 9 | public class Node 10 | { 11 | public string Name { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows; 8 | 9 | 10 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/TreeListBoxDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | WinExe 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/ViewModel/Observable.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace TreeListBoxDemo 8 | { 9 | using System.ComponentModel; 10 | 11 | public abstract class Observable : INotifyPropertyChanged 12 | { 13 | public event PropertyChangedEventHandler PropertyChanged; 14 | 15 | protected void RaisePropertyChanged(string property) 16 | { 17 | var handler = PropertyChanged; 18 | if (handler != null) 19 | { 20 | handler(this, new PropertyChangedEventArgs(property)); 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Examples/TreeListBox/TreeListBoxDemo/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/Examples/TreeListBox/TreeListBoxDemo/folder.png -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf.ExtendedToolkit/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Markup; 2 | 3 | [assembly: XmlnsPrefix("http://propertytools.org/wpf/extended", "ptext")] 4 | [assembly: XmlnsDefinition("http://propertytools.org/wpf/extended", "PropertyTools.Wpf.ExtendedToolkit")] -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf.ExtendedToolkit/PropertyTools.Wpf.Extended.Toolkit.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | $(MSBuildToolsPath)\Microsoft.CSharp.targets 4 | net462;net8.0-windows 5 | true 6 | https://raw.githubusercontent.com/PropertyTools/PropertyTools/master/Images/icon.png 7 | icon.png 8 | true 9 | PropertyTools 10 | PropertyTools 11 | PropertyTools for WPF ExtendedToolkit 12 | MIT 13 | https://github.com/PropertyTools/PropertyTools/ 14 | 0.0.1 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf.Tests/Helpers/TimeSpanFormatterTests.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace PropertyTools.Wpf.Tests 8 | { 9 | using System; 10 | using NUnit.Framework; 11 | 12 | [TestFixture] 13 | public class TimeSpanFormatterTests 14 | { 15 | [Test] 16 | public void Format_Days_ReturnsCorrectValue() 17 | { 18 | var f = new TimeSpanFormatter(); 19 | var span = new TimeSpan(1, 7, 3, 2); 20 | Assert.AreEqual("01", string.Format(f, "{0:DD}", span)); 21 | Assert.AreEqual("1", string.Format(f, "{0:D}", span)); 22 | Assert.AreEqual("1 07", string.Format(f, "{0:D hh}", span)); 23 | Assert.AreEqual("01 07 03 02", string.Format(f, "{0:DD hh mm ss}", span)); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf.Tests/PropertyTools.Wpf.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | true 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Comparers/ISortDescriptionComparer.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Defines a comparer that uses a collection of sort descriptions. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | using System.Collections; 13 | using System.ComponentModel; 14 | 15 | /// 16 | /// Defines a comparer that uses a collection of sort descriptions. 17 | /// 18 | /// 19 | public interface ISortDescriptionComparer : IComparer 20 | { 21 | /// 22 | /// Gets the sort descriptions. 23 | /// 24 | /// 25 | /// The sort descriptions. 26 | /// 27 | SortDescriptionCollection SortDescriptions { get; } 28 | } 29 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Controls/CheckMark/Generic.xaml: -------------------------------------------------------------------------------- 1 |  3 | 12 | -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Controls/ColorPicker/ColorPicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/PropertyTools.Wpf/Controls/ColorPicker/ColorPicker.png -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Controls/ColorPicker/Hsv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/PropertyTools.Wpf/Controls/ColorPicker/Hsv.png -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Controls/DockPanelSplitter/Generic.xaml: -------------------------------------------------------------------------------- 1 |  3 | 13 | -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Controls/TextBlockEx/Generic.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 12 | 13 | -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Controls/TextBlockEx/TextBlockEx.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Represents a TextBlock than can be disabled. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | using System.Windows; 13 | using System.Windows.Controls; 14 | 15 | /// 16 | /// Represents a TextBlock than can be disabled. 17 | /// 18 | public class TextBlockEx : TextBlock 19 | { 20 | /// 21 | /// Initializes static members of the class. 22 | /// 23 | static TextBlockEx() 24 | { 25 | DefaultStyleKeyProperty.OverrideMetadata(typeof(TextBlockEx), new FrameworkPropertyMetadata(typeof(TextBlockEx))); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Converters/SelfProvider.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // The self provider. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | using System; 13 | using System.Windows.Markup; 14 | 15 | /// 16 | /// The self provider. 17 | /// 18 | [Obsolete] 19 | public abstract class SelfProvider : MarkupExtension 20 | { 21 | /// 22 | /// The provide value. 23 | /// 24 | /// The service provider. 25 | /// 26 | /// The provide value. 27 | /// 28 | public override object ProvideValue(IServiceProvider serviceProvider) 29 | { 30 | return this; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/CellDefinitions/CheckCellDefinition.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Defines a cell that contains a boolean property. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | /// 13 | /// Defines a cell that contains a boolean property. 14 | /// 15 | /// 16 | public class CheckCellDefinition : CellDefinition 17 | { 18 | } 19 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/CellDefinitions/ColorCellDefinition.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Defines a cell that contains a color property. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | /// 13 | /// Defines a cell that contains a color property. 14 | /// 15 | public class ColorCellDefinition : CellDefinition 16 | { 17 | } 18 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/CellDefinitions/TextCellDefinition.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Defines a cell that contains a string property. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | /// 13 | /// Defines a cell that contains a string property. 14 | /// 15 | /// 16 | public class TextCellDefinition : CellDefinition 17 | { 18 | /// 19 | /// Gets or sets the maximum length. 20 | /// 21 | /// 22 | /// The maximum length. 23 | /// 24 | public int MaxLength { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/Cursors/AutoFill.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/PropertyTools.Wpf/DataGrid/Cursors/AutoFill.cur -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/Cursors/Cross.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/PropertyTools.Wpf/DataGrid/Cursors/Cross.cur -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/Cursors/DownArrow.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/PropertyTools.Wpf/DataGrid/Cursors/DownArrow.cur -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/Cursors/RightArrow.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objorke/PropertyTools/2429d665df8d3801922610b991df213c3e6dfeff/Source/PropertyTools.Wpf/DataGrid/Cursors/RightArrow.cur -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/Definitions/ColumnDefinition.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Defines a column in a DataGrid. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | using System.Windows; 13 | 14 | /// 15 | /// Defines a column in a . 16 | /// 17 | public class ColumnDefinition : PropertyDefinition 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | public ColumnDefinition() 23 | { 24 | this.Width = GridLength.Auto; 25 | } 26 | 27 | /// 28 | /// Gets or sets the column width. 29 | /// 30 | /// The width. 31 | public GridLength Width { get; set; } 32 | } 33 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/Definitions/RowDefinition.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Defines a row in a DataGrid. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | using System.Windows; 13 | 14 | /// 15 | /// Defines a row in a . 16 | /// 17 | public class RowDefinition : PropertyDefinition 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | public RowDefinition() 23 | { 24 | this.Height = GridLength.Auto; 25 | } 26 | 27 | /// 28 | /// Gets or sets the row height. 29 | /// 30 | /// The height. 31 | public GridLength Height { get; set; } 32 | } 33 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/DataGrid/ICellDefinitionFactory.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2014 PropertyTools contributors 4 | // 5 | // 6 | // Specifies a cell definition factory for the DataGrid. 7 | // 8 | // -------------------------------------------------------------------------------------------------------------------- 9 | 10 | namespace PropertyTools.Wpf 11 | { 12 | /// 13 | /// Specifies a factory for the . 14 | /// 15 | public interface ICellDefinitionFactory 16 | { 17 | /// 18 | /// Creates the cell definition for the specified cell. 19 | /// 20 | /// The cell descriptor. 21 | /// 22 | /// The cell definition 23 | /// 24 | CellDefinition CreateCellDefinition(CellDescriptor d); 25 | } 26 | } -------------------------------------------------------------------------------- /Source/PropertyTools.Wpf/Dialogs/WizardDialog.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 |