├── .github └── workflows │ ├── deploy.yml │ ├── publish.yml │ ├── release-tag.yml │ └── test.yml ├── .gitignore ├── DemoCenter ├── DemoCenter.Android │ ├── DemoCenter.Android.csproj │ ├── Icon.png │ ├── MainActivity.cs │ ├── Properties │ │ └── AndroidManifest.xml │ └── Resources │ │ ├── AboutResources.txt │ │ ├── drawable-night-v31 │ │ └── avalonia_anim.xml │ │ ├── drawable-v31 │ │ └── avalonia_anim.xml │ │ ├── drawable │ │ └── splash_screen.xml │ │ ├── values-night │ │ └── colors.xml │ │ ├── values-v31 │ │ └── styles.xml │ │ └── values │ │ ├── colors.xml │ │ └── styles.xml ├── DemoCenter.Desktop │ ├── AssemblyInfo.cs │ ├── DemoCenter.Desktop.csproj │ ├── Program.cs │ └── app.manifest ├── DemoCenter.Mobile.sln ├── DemoCenter.WASM.sln ├── DemoCenter.Web │ ├── DemoCenter.Web.csproj │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── runtimeconfig.template.json │ └── wwwroot │ │ ├── app.css │ │ ├── favicon.ico │ │ ├── index.html │ │ └── main.js ├── DemoCenter.iOS │ ├── AppDelegate.cs │ ├── DemoCenter.iOS.csproj │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ └── Resources │ │ └── LaunchScreen.xib ├── DemoCenter.sln └── DemoCenter │ ├── App.axaml │ ├── App.axaml.cs │ ├── AssemblyInfo.cs │ ├── Assets │ ├── EMXControls.ico │ └── Eremex.svg │ ├── DemoCenter.csproj │ ├── DemoData │ ├── CsvClasses │ │ ├── CarInfo.cs │ │ ├── CsvClasses.cs │ │ ├── CsvColumnData.cs │ │ ├── StockInfo.cs │ │ └── StockProduct.cs │ ├── CsvSources.cs │ ├── ElementsSources.cs │ ├── EmployeesData.cs │ ├── Enums.cs │ ├── OrderData.cs │ ├── ProjectTasksData.cs │ └── csv │ │ ├── Bitcoin Historical Data.csv │ │ ├── CarImages │ │ ├── AlienSpeedster.png │ │ ├── AstroTrailblazer.png │ │ ├── CyberRover.png │ │ ├── InterstellarExplorer.png │ │ ├── MarsAdventureVan.png │ │ ├── MarsCruiser.png │ │ ├── MarsInterceptor.png │ │ ├── MarsOffroader.png │ │ ├── MarsRoverX.png │ │ ├── MarsUtilityTruck.png │ │ ├── MartianSprinter.png │ │ ├── RedDustBuggy.png │ │ ├── RedPlanetCruiser.png │ │ ├── RedPlanetRacer.png │ │ ├── SpaceHopper.png │ │ ├── convert.bat │ │ └── readme.txt │ │ ├── cars.csv │ │ ├── logarithmic.csv │ │ ├── mechs.csv │ │ ├── orgchat.csv │ │ ├── spacexlaunches.csv │ │ ├── stockProducts.csv │ │ ├── yachtNames.csv │ │ └── yachts.csv │ ├── Helpers │ ├── HeatmapHelper.cs │ └── ThemedSyntaxHighlighter.cs │ ├── ProductsData │ ├── BarsGroupInfo.cs │ ├── CartesianChartGroupInfo.cs │ ├── CommonControlsGroupInfo.cs │ ├── DataGridGroupInfo.cs │ ├── DeveloperToolsGroupInfo.cs │ ├── EditorsGroupInfo.cs │ ├── Graphics3DControlGroupInfo.cs │ ├── GroupInfo.cs │ ├── HeatmapGroupInfo.cs │ ├── PageInfo.cs │ ├── PolarChartGroupInfo.cs │ ├── ProductInfoBase.cs │ ├── Products.cs │ ├── PropertyGridGroupInfo.cs │ ├── RibbonGroupInfo.cs │ ├── SmithChartGroupInfo.cs │ ├── StandardControlsGroupInfo.cs │ └── TreeListGroupInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Resources.ru.resx │ ├── Resources.zh-Hans.resx │ ├── Resources │ ├── Colors.Dark.axaml │ ├── Colors.Light.axaml │ ├── Graphics3D │ │ ├── Materials │ │ │ ├── AlienPanels.zip │ │ │ ├── BricksMortar.zip │ │ │ ├── CloudyVeinedQuartzLight.zip │ │ │ ├── LavaAndRock.zip │ │ │ ├── RectanglePolishedTile.zip │ │ │ ├── RustedSteel.zip │ │ │ └── SpaceShipMonitor.zip │ │ ├── Models │ │ │ ├── Gear_1.obj │ │ │ ├── Gear_2.obj │ │ │ ├── Gear_3.obj │ │ │ ├── Sphere.obj │ │ │ ├── Teapot.obj │ │ │ ├── Teapot_Quad.obj │ │ │ └── ddBox-C1.zip │ │ └── Textures │ │ │ └── Galaxy.png │ ├── Highlighters │ │ ├── Axaml-Highlight-Dark.xshd │ │ ├── Axaml-Highlight-Light.xshd │ │ ├── CSharp-Highlight-Dark.xshd │ │ └── CSharp-Highlight-Light.xshd │ ├── Png │ │ └── hlsp_jwst-ero_jwst_miri_carina_f1130w_v1_i2d.png │ ├── SearchPanel.axaml │ ├── SharedResources.axaml │ ├── SharedStyles.axaml │ ├── Svg │ │ └── Ring.svg │ ├── SvgIconsBrowserViewResources.Designer.cs │ └── SvgIconsBrowserViewResources.resx │ ├── ViewLocator.cs │ ├── ViewModels │ ├── Bars │ │ ├── BarItemsPageViewModel.cs │ │ ├── BarsGroupViewModel.cs │ │ ├── BarsOverviewPageViewModel.cs │ │ ├── ContextMenuPageViewModel.cs │ │ └── ToolbarAndMenuPageViewModel.cs │ ├── Charts │ │ ├── CartesianAreaSeriesViewViewModel.cs │ │ ├── CartesianCandlestickAggregationViewModel.cs │ │ ├── CartesianCandlestickSeriesViewViewModel.cs │ │ ├── CartesianChartAxesPageViewModel.cs │ │ ├── CartesianChartLargeDataPageViewModel.cs │ │ ├── CartesianChartLogarithmicScalePageViewModel.cs │ │ ├── CartesianChartRealtimePageViewModel.cs │ │ ├── CartesianLineSeriesViewViewModel.cs │ │ ├── CartesianPointSeriesViewViewModel.cs │ │ ├── CartesianRangeAreaSeriesViewViewModel.cs │ │ ├── CartesianScatterLineSeriesViewViewModel.cs │ │ ├── CartesianSideBySideBarSeriesViewViewModel.cs │ │ ├── CartesianSideBySideRangeBarSeriesViewViewModel.cs │ │ ├── CartesianStepAreaSeriesViewViewModel.cs │ │ ├── CartesianStepLineSeriesViewViewModel.cs │ │ ├── CartesianStripsAndConstantLinesViewModel.cs │ │ ├── ChartElementViewModels │ │ │ ├── AxisViewModel.cs │ │ │ ├── ConstantLineViewModel.cs │ │ │ ├── CustomLabelFormatter.cs │ │ │ ├── LogarithmicAxisViewModel.cs │ │ │ └── SeriesViewModel.cs │ │ ├── ChartsPageViewModel.cs │ │ ├── Data │ │ │ ├── ClusterDataAdapter.cs │ │ │ ├── RealtimeDataGenerator.cs │ │ │ └── SmithSampleDataAdapter.cs │ │ ├── HeatmapColorProvidersViewModel.cs │ │ ├── HeatmapRealTimeViewModel.cs │ │ ├── PolarAreaSeriesViewViewModel.cs │ │ ├── PolarLineSeriesViewViewModel.cs │ │ ├── PolarPointSeriesViewViewModel.cs │ │ ├── PolarRangeAreaSeriesViewViewModel.cs │ │ ├── PolarScatterLineSeriesViewViewModel.cs │ │ ├── PolarStripsAndConstantLinesViewModel.cs │ │ ├── SmithLineSeriesViewViewModel.cs │ │ └── SmithPointSeriesViewViewModel.cs │ ├── CommonControls │ │ ├── CommonControlsGroupViewModel.cs │ │ ├── MessageBoxPageViewModel.cs │ │ ├── SplitContainerControlPageViewModel.cs │ │ └── TabControlPageViewModel.cs │ ├── DataGrid │ │ ├── DataGridDataEditorsPageViewModel.cs │ │ ├── DataGridDragDropPageViewModel.cs │ │ ├── DataGridFilteringViewModel.cs │ │ ├── DataGridGroupingPageViewModel.cs │ │ ├── DataGridLargeDataPageViewModel.cs │ │ ├── DataGridLiveDataPageViewModel.cs │ │ ├── DataGridMultipleSelectionPageViewModel.cs │ │ ├── DataGridPageViewModel.cs │ │ ├── DataGridRowAutoHeightViewModel.cs │ │ └── DataGridValidationViewModel.cs │ ├── DesktopOnlyViewModel.cs │ ├── DockManager │ │ └── IdeLayoutPageViewModel.cs │ ├── Editors │ │ ├── ColorEditorPageViewModel.cs │ │ ├── ComboBoxEditorPageViewModel.cs │ │ ├── DateEditorPageViewModel.cs │ │ ├── EditorsGroupViewModel.cs │ │ ├── EditorsOverviewPageViewModel.cs │ │ ├── EnumSourcePageViewModel.cs │ │ ├── HyperlinkEditorPageViewModel.cs │ │ ├── MemoEditorPageViewModel.cs │ │ ├── SegmentedEditorPageViewModel.cs │ │ ├── SpinEditorPageViewModel.cs │ │ └── TextEditingPageViewModel.cs │ ├── Graphics3DControl │ │ ├── Graphics3DControlCameraViewModel.cs │ │ ├── Graphics3DControlLinesViewModel.cs │ │ ├── Graphics3DControlOverviewViewModel.cs │ │ ├── Graphics3DControlPointsViewModel.cs │ │ ├── Graphics3DControlSimpleMaterialsViewModel.cs │ │ ├── Graphics3DControlStlViewModel.cs │ │ ├── Graphics3DControlTexturedMaterialsViewModel.cs │ │ ├── Graphics3DControlTransformationViewModel.cs │ │ ├── Graphics3DControlViewModel.cs │ │ └── MeshViewModel.cs │ ├── MainViewModel.cs │ ├── PageViewModelBase.cs │ ├── PropertyGrid │ │ ├── PropertyGridDataEditorsViewModel.cs │ │ ├── PropertyGridGroupViewModel.cs │ │ └── PropertyGridTabItemsViewModel.cs │ ├── Ribbon │ │ ├── RibbonGroupViewModel.cs │ │ └── WordPadExampleViewModel.cs │ ├── StandardControls │ │ ├── PrimitivesPageViewModel.cs │ │ ├── ProgressBarPageViewModel.cs │ │ ├── SliderPageViewModel.cs │ │ ├── StandardControlsGroupViewModel.cs │ │ └── StandardControlsOverviewPageViewModel.cs │ ├── Tools │ │ ├── DeveloperToolsGroupViewModel.cs │ │ └── SvgIconsBrowserViewModel.cs │ └── TreeList │ │ ├── FolderBrowserPageViewModel.cs │ │ ├── TreeListDataEditorsPageViewModel.cs │ │ ├── TreeListFilteringPageViewModel.cs │ │ ├── TreeListGroupViewModel.cs │ │ └── TreeListMultipleSelectionPageViewModel.cs │ ├── Views │ ├── Bars │ │ ├── BarItemsPageView.axaml │ │ ├── BarItemsPageView.axaml.cs │ │ ├── BarsGroupView.axaml │ │ ├── BarsGroupView.axaml.cs │ │ ├── BarsOverviewPageView.axaml │ │ ├── BarsOverviewPageView.axaml.cs │ │ ├── ContextMenuPageView.axaml │ │ ├── ContextMenuPageView.axaml.cs │ │ ├── Helpers │ │ │ ├── Converters.cs │ │ │ ├── ScaleDecorator.cs │ │ │ └── TextBoxHelper.cs │ │ ├── ToolbarAndMenuPageView.axaml │ │ └── ToolbarAndMenuPageView.axaml.cs │ ├── Charts │ │ ├── CartesianAreaSeriesViewView.axaml │ │ ├── CartesianAreaSeriesViewView.axaml.cs │ │ ├── CartesianCandlestickAggregationView.axaml │ │ ├── CartesianCandlestickAggregationView.axaml.cs │ │ ├── CartesianCandlestickSeriesViewView.axaml │ │ ├── CartesianCandlestickSeriesViewView.axaml.cs │ │ ├── CartesianChartAxesPageView.axaml │ │ ├── CartesianChartAxesPageView.axaml.cs │ │ ├── CartesianChartLargeDataPageView.axaml │ │ ├── CartesianChartLargeDataPageView.axaml.cs │ │ ├── CartesianChartLogarithmicScalePageView.axaml │ │ ├── CartesianChartLogarithmicScalePageView.axaml.cs │ │ ├── CartesianChartRealtimePageView.axaml │ │ ├── CartesianChartRealtimePageView.axaml.cs │ │ ├── CartesianLineSeriesViewView.axaml │ │ ├── CartesianLineSeriesViewView.axaml.cs │ │ ├── CartesianPointSeriesViewView.axaml │ │ ├── CartesianPointSeriesViewView.axaml.cs │ │ ├── CartesianRangeAreaSeriesViewView.axaml │ │ ├── CartesianRangeAreaSeriesViewView.axaml.cs │ │ ├── CartesianScatterLineSeriesViewView.axaml │ │ ├── CartesianScatterLineSeriesViewView.axaml.cs │ │ ├── CartesianSideBySideBarSeriesViewView.axaml │ │ ├── CartesianSideBySideBarSeriesViewView.axaml.cs │ │ ├── CartesianSideBySideRangeBarSeriesViewView.axaml │ │ ├── CartesianSideBySideRangeBarSeriesViewView.axaml.cs │ │ ├── CartesianStepAreaSeriesViewView.axaml │ │ ├── CartesianStepAreaSeriesViewView.axaml.cs │ │ ├── CartesianStepLineSeriesViewView.axaml │ │ ├── CartesianStepLineSeriesViewView.axaml.cs │ │ ├── CartesianStripsAndConstantLinesView.axaml │ │ ├── CartesianStripsAndConstantLinesView.axaml.cs │ │ ├── HeatmapColorProvidersView.axaml │ │ ├── HeatmapColorProvidersView.axaml.cs │ │ ├── HeatmapRealTimeView.axaml │ │ ├── HeatmapRealTimeView.axaml.cs │ │ ├── PolarAreaSeriesViewView.axaml │ │ ├── PolarAreaSeriesViewView.axaml.cs │ │ ├── PolarLineSeriesViewView.axaml │ │ ├── PolarLineSeriesViewView.axaml.cs │ │ ├── PolarPointSeriesViewView.axaml │ │ ├── PolarPointSeriesViewView.axaml.cs │ │ ├── PolarRangeAreaSeriesViewView.axaml │ │ ├── PolarRangeAreaSeriesViewView.axaml.cs │ │ ├── PolarScatterLineSeriesViewView.axaml │ │ ├── PolarScatterLineSeriesViewView.axaml.cs │ │ ├── PolarStripsAndConstantLinesView.axaml │ │ ├── PolarStripsAndConstantLinesView.axaml.cs │ │ ├── SmithLineSeriesViewView.axaml │ │ ├── SmithLineSeriesViewView.axaml.cs │ │ ├── SmithPointSeriesViewView.axaml │ │ └── SmithPointSeriesViewView.axaml.cs │ ├── CommonControls │ │ ├── CommonControlsGroupView.axaml │ │ ├── CommonControlsGroupView.axaml.cs │ │ ├── MessageBoxPageView.axaml │ │ ├── MessageBoxPageView.axaml.cs │ │ ├── SplitContainerControlPageView.axaml │ │ ├── SplitContainerControlPageView.axaml.cs │ │ ├── TabControlPageView.axaml │ │ └── TabControlPageView.axaml.cs │ ├── Converters │ │ └── EnumRadioButtonConverter.cs │ ├── DataGrid │ │ ├── DataGridDataEditorsView.axaml │ │ ├── DataGridDataEditorsView.axaml.cs │ │ ├── DataGridDragDropPageView.axaml │ │ ├── DataGridDragDropPageView.axaml.cs │ │ ├── DataGridFilteringView.axaml │ │ ├── DataGridFilteringView.axaml.cs │ │ ├── DataGridGroupingPageView.axaml │ │ ├── DataGridGroupingPageView.axaml.cs │ │ ├── DataGridLargeDataView.axaml │ │ ├── DataGridLargeDataView.axaml.cs │ │ ├── DataGridLiveDataPageView.axaml │ │ ├── DataGridLiveDataPageView.axaml.cs │ │ ├── DataGridMultipleSelectionPageView.axaml │ │ ├── DataGridMultipleSelectionPageView.axaml.cs │ │ ├── DataGridPageView.axaml │ │ ├── DataGridPageView.axaml.cs │ │ ├── DataGridRowAutoHeightView.axaml │ │ ├── DataGridRowAutoHeightView.axaml.cs │ │ ├── DataGridValidationView.axaml │ │ └── DataGridValidationView.axaml.cs │ ├── DesktopOnlyView.axaml │ ├── DesktopOnlyView.axaml.cs │ ├── DockManager │ │ ├── IdeLayoutPageView.axaml │ │ └── IdeLayoutPageView.axaml.cs │ ├── Editors │ │ ├── ColorEditorPageView.axaml │ │ ├── ColorEditorPageView.axaml.cs │ │ ├── ComboBoxEditorPageView.axaml │ │ ├── ComboBoxEditorPageView.axaml.cs │ │ ├── DateEditorPageView.axaml │ │ ├── DateEditorPageView.axaml.cs │ │ ├── EditorsGroupView.axaml │ │ ├── EditorsGroupView.axaml.cs │ │ ├── EditorsOverviewPageView.axaml │ │ ├── EditorsOverviewPageView.axaml.cs │ │ ├── EnumSourcePageView.axaml │ │ ├── EnumSourcePageView.axaml.cs │ │ ├── HyperlinkEditorPageView.axaml │ │ ├── HyperlinkEditorPageView.axaml.cs │ │ ├── MemoEditorPageView.axaml │ │ ├── MemoEditorPageView.axaml.cs │ │ ├── SegmentedEditorPageView.axaml │ │ ├── SegmentedEditorPageView.axaml.cs │ │ ├── SpinEditorPageView.axaml │ │ ├── SpinEditorPageView.axaml.cs │ │ ├── TextEditingPageView.axaml │ │ └── TextEditingPageView.axaml.cs │ ├── Graphics3DControl │ │ ├── Graphics3DControlCameraView.axaml │ │ ├── Graphics3DControlCameraView.axaml.cs │ │ ├── Graphics3DControlLinesView.axaml │ │ ├── Graphics3DControlLinesView.axaml.cs │ │ ├── Graphics3DControlOverviewView.axaml │ │ ├── Graphics3DControlOverviewView.axaml.cs │ │ ├── Graphics3DControlPointsView.axaml │ │ ├── Graphics3DControlPointsView.axaml.cs │ │ ├── Graphics3DControlSimpleMaterialsView.axaml │ │ ├── Graphics3DControlSimpleMaterialsView.axaml.cs │ │ ├── Graphics3DControlStlView.axaml │ │ ├── Graphics3DControlStlView.axaml.cs │ │ ├── Graphics3DControlTexturedMaterialsView.axaml │ │ ├── Graphics3DControlTexturedMaterialsView.axaml.cs │ │ ├── Graphics3DControlTransformationView.axaml │ │ └── Graphics3DControlTransformationView.axaml.cs │ ├── MainView.axaml │ ├── MainView.axaml.cs │ ├── MainWindow.axaml │ ├── MainWindow.axaml.cs │ ├── PropertyGrid │ │ ├── PropertyGridDataEditorsView.axaml │ │ ├── PropertyGridDataEditorsView.axaml.cs │ │ ├── PropertyGridGroupView.axaml │ │ ├── PropertyGridGroupView.axaml.cs │ │ ├── PropertyGridTabItemsView.axaml │ │ ├── PropertyGridTabItemsView.axaml.cs │ │ └── Utils │ │ │ └── ContentControlPropertiesWrapper.cs │ ├── Ribbon │ │ ├── FontStyleGalleryItemForegroundConverter.cs │ │ ├── WordPadExampleView.axaml │ │ └── WordPadExampleView.axaml.cs │ ├── StandardControls │ │ ├── PrimitivesPageView.axaml │ │ ├── PrimitivesPageView.axaml.cs │ │ ├── ProgressBarPageView.axaml │ │ ├── ProgressBarPageView.axaml.cs │ │ ├── SliderPageView.axaml │ │ ├── SliderPageView.axaml.cs │ │ ├── StandardControlsGroupView.axaml │ │ ├── StandardControlsGroupView.axaml.cs │ │ ├── StandardControlsOverviewPageView.axaml │ │ └── StandardControlsOverviewPageView.axaml.cs │ ├── Tools │ │ ├── SvgIconsBrowserView.axaml │ │ ├── SvgIconsBrowserView.axaml.cs │ │ └── Templates │ │ │ ├── svgCodeExample.cs │ │ │ └── svgXamlExample.axaml │ └── TreeList │ │ ├── FolderBrowserPageView.axaml │ │ ├── FolderBrowserPageView.axaml.cs │ │ ├── TreeListDataEditorsPageView.axaml │ │ ├── TreeListDataEditorsPageView.axaml.cs │ │ ├── TreeListFilteringPageView.axaml │ │ ├── TreeListFilteringPageView.axaml.cs │ │ ├── TreeListGroupView.axaml │ │ ├── TreeListGroupView.axaml.cs │ │ ├── TreeListMultipleSelectionPageView.axaml │ │ └── TreeListMultipleSelectionPageView.axaml.cs │ └── emxLicense.cs ├── Directory.Build.props ├── Directory.Packages.props ├── License.md ├── Tests ├── DemoCenter.Desktop.UI.Tests │ ├── AvaloniaApp.cs │ ├── AvaloniaUiTestFramework.cs │ ├── DemoCenter.Desktop.UI.Tests.csproj │ ├── DemoCenter.Desktop.UI.Tests.sln │ ├── ModulesShowTests.cs │ └── emxLicense.cs ├── Directory.Build.targets ├── Eremex.ruleset └── stylecop.json ├── docs ├── charts.md ├── commoncontrols.md ├── datagrid.md ├── docking.md ├── editors.md ├── graphics3dcontrol.md ├── heatmap.md ├── images │ ├── cartesianchart1.png │ ├── controls-dark-sm.png │ ├── controls-dark.png │ ├── controls-dark.snag │ ├── controls-gallery │ │ ├── bars-darktheme-sm.png │ │ ├── bars-darktheme.png │ │ ├── bars-sm.png │ │ ├── bars.png │ │ ├── chart-axes-lighttheme-sm.png │ │ ├── chart-axes-lighttheme.png │ │ ├── charts-logarithmic-sm.png │ │ ├── charts-logarithmic.png │ │ ├── charts-realtimedata-sm.png │ │ ├── charts-realtimedata.png │ │ ├── datagrid-editorsmodule-darktheme-sm.png │ │ ├── datagrid-editorsmodule-darktheme.png │ │ ├── datagrid-editorsmodule-grouping-lighttheme-sm.png │ │ ├── datagrid-editorsmodule-grouping-lighttheme.png │ │ ├── datagrid-grouping-lighttheme-sm.png │ │ ├── datagrid-grouping-lighttheme.png │ │ ├── docking-darktheme-sm.png │ │ ├── docking-darktheme.png │ │ ├── docking-lighttheme-sm.png │ │ ├── docking-lighttheme.png │ │ ├── editors-sm.png │ │ ├── editors.png │ │ ├── propertyGrid-inplaceeditor-sm.png │ │ ├── propertyGrid-inplaceeditor.png │ │ ├── propertyGrid-sm.png │ │ ├── propertyGrid.png │ │ ├── treelist-lighttheme-sm.png │ │ ├── treelist-lighttheme.png │ │ ├── treelist-search-darktheme-sm.png │ │ ├── treelist-search-darktheme.png │ │ ├── treelist-search-lighttheme-sm.png │ │ ├── treelist-search-lighttheme.png │ │ ├── utilitycontrols-darktheme-sm.png │ │ └── utilitycontrols-darktheme.png │ ├── controls-light-sm-v1.1.png │ ├── controls-light-sm.png │ ├── controls-light-v1.1.png │ ├── controls-light.png │ ├── controls-light.snag │ ├── data-editors.png │ ├── data-grid.png │ ├── docking-ui.png │ ├── graphics3dcontrol.png │ ├── heatmap-grayscale.png │ ├── heatmap.png │ ├── os-logo-RED_OS.png │ ├── os-logo-astra_linux.svg │ ├── polarchart1.png │ ├── propertygrid.png │ ├── ribbon.png │ ├── smithchart1.png │ ├── thumb-bars.png │ ├── thumb-chartcontrol.png │ ├── thumb-darktheme.png │ ├── thumb-darktheme2.png │ ├── thumb-datagrid.png │ ├── thumb-docking.png │ ├── thumb-editors.png │ ├── thumb-graphics3dcontrol.png │ ├── thumb-heatmap.png │ ├── thumb-lighttheme.png │ ├── thumb-lighttheme2.png │ ├── thumb-propertygrid.png │ ├── thumb-ribbon.png │ ├── thumb-treelist.png │ ├── thumb-utilitycontrols.png │ ├── toolbars.png │ ├── treelist.png │ ├── treeview.png │ └── utility-controls.png ├── propertygrid.md ├── ribbon.md ├── toolbars.md └── treelist.md └── readme.md /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to GitHub Pages 2 | 3 | env: 4 | PROJECT_PATH: DemoCenter/DemoCenter.Web/DemoCenter.Web.csproj 5 | OUTPUT_PATH: DemoCenter/DemoCenter.Web/bin/Release/publish/wwwroot 6 | on: 7 | workflow_dispatch: 8 | 9 | jobs: 10 | deploy-to-github-pages: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v4.1.1 15 | 16 | - name: Setup .NET 8 17 | uses: actions/setup-dotnet@v4 18 | with: 19 | dotnet-version: 8.0.x 20 | 21 | - name: Install wasm-tools 22 | run: dotnet workload install wasm-tools 23 | 24 | - name: Publish .NET Project 25 | run: dotnet publish $PROJECT_PATH -c Release --nologo -p:PublishTrimmed=false 26 | 27 | - name: Change base-tag in index.html 28 | run: sed -i 's###g' $OUTPUT_PATH/index.html 29 | 30 | - name: Add .nojekyll file 31 | run: touch $OUTPUT_PATH/.nojekyll 32 | 33 | - name: Commit wwwroot to GitHub Pages 34 | uses: JamesIves/github-pages-deploy-action@v4.5.0 35 | with: 36 | github_token: ${{ secrets.GITHUB_TOKEN }} 37 | branch: gh-pages 38 | folder: ${{ env.OUTPUT_PATH }} 39 | single-commit: true -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: [ "main", "action/publish" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | workflow_dispatch: 9 | 10 | jobs: 11 | windows: 12 | runs-on: windows-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v4.1.1 16 | - name: EMXDemo Unit Test 17 | run: dotnet test ./Tests/DemoCenter.Desktop.UI.Tests/DemoCenter.Desktop.UI.Tests.csproj 18 | 19 | ubuntu: 20 | runs-on: ubuntu-latest 21 | steps: 22 | - name: Checkout 23 | uses: actions/checkout@v4.1.1 24 | - name: EMXDemo Unit Test 25 | run: dotnet test ./Tests/DemoCenter.Desktop.UI.Tests/DemoCenter.Desktop.UI.Tests.csproj 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | #Ignore thumbnails created by Windows 3 | Thumbs.db 4 | #Ignore files built by Visual Studio 5 | *.obj 6 | *.exe 7 | *.pdb 8 | *.user 9 | *.aps 10 | *.pch 11 | *.vspscc 12 | *_i.c 13 | *_p.c 14 | *.ncb 15 | *.suo 16 | *.tlb 17 | *.tlh 18 | *.bak 19 | *.cache 20 | *.ilk 21 | *.log 22 | [Bb]in 23 | [Dd]ebug*/ 24 | *.lib 25 | *.sbr 26 | obj/ 27 | .cr/ 28 | [Rr]elease*/ 29 | _ReSharper*/ 30 | [Tt]est[Rr]esult* 31 | .vs/ 32 | #Nuget packages folder 33 | .idea 34 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/DemoCenter.Android.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Exe 4 | net8.0-android 5 | 21 6 | enable 7 | net.Eremex.DemoCenter 8 | 1 9 | 1.0 10 | apk 11 | false 12 | 13 | partial 14 | False 15 | False 16 | 17 | 18 | 19 | Resources\drawable\Icon.png 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter.Android/Icon.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.Content.PM; 2 | using Avalonia; 3 | using Avalonia.Android; 4 | using DemoCenter; 5 | 6 | namespace testAndroid.Android; 7 | 8 | [Activity( 9 | Label = "DemoCenter.Android", 10 | Theme = "@style/MyTheme.NoActionBar", 11 | Icon = "@drawable/icon", 12 | MainLauncher = true, 13 | ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.UiMode)] 14 | public class MainActivity : AvaloniaMainActivity 15 | { 16 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) 17 | { 18 | return base.CustomizeAppBuilder(builder) 19 | .WithInterFont(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/Resources/drawable/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/Resources/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #212121 4 | 5 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/Resources/values-v31/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 17 | 21 | 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | 5 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Android/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Desktop/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | [assembly: AssemblyDescription("")] 5 | [assembly: AssemblyConfiguration("")] 6 | [assembly: AssemblyCulture("")] 7 | 8 | [assembly: InternalsVisibleTo("DemoCenter.Desktop.UI.Tests")] -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Desktop/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia; 3 | using Avalonia.ReactiveUI; 4 | 5 | namespace DemoCenter.Desktop; 6 | 7 | class Program 8 | { 9 | // Initialization code. Don't use any Avalonia, third-party APIs or any 10 | // SynchronizationContext-reliant code before AppMain is called: things aren't initialized 11 | // yet and stuff might break. 12 | [STAThread] 13 | public static void Main(string[] args) => BuildAvaloniaApp() 14 | .StartWithClassicDesktopLifetime(args); 15 | 16 | // Avalonia configuration, don't remove; also used by visual designer. 17 | public static AppBuilder BuildAvaloniaApp() 18 | => AppBuilder.Configure() 19 | .UsePlatformDetect() 20 | .WithInterFont() 21 | .LogToTrace() 22 | .UseReactiveUI(); 23 | } 24 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Desktop/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Web/DemoCenter.Web.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-browser 4 | true 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Web/Program.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Versioning; 2 | using System.Threading.Tasks; 3 | using Avalonia; 4 | using Avalonia.Browser; 5 | using Avalonia.Themes.Fluent; 6 | using DemoCenter; 7 | 8 | [assembly: SupportedOSPlatform("browser")] 9 | 10 | internal partial class Program { 11 | 12 | private static Task Main(string[] args) 13 | => BuildAvaloniaApp() 14 | .WithInterFont() 15 | .WithFluent() 16 | .StartBrowserAppAsync("out"); 17 | 18 | public static AppBuilder BuildAvaloniaApp() 19 | => AppBuilder.Configure(); 20 | 21 | } 22 | 23 | internal static class AppBuilderExtension 24 | { 25 | public static AppBuilder WithFluent(this AppBuilder appBuilder) 26 | => appBuilder.AfterSetup(builder => builder.Instance.Styles.Insert(0, new FluentTheme())); 27 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Web/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "DemoCenter.Web": { 4 | "commandName": "Project", 5 | "launchBrowser": true, 6 | "environmentVariables": { 7 | "ASPNETCORE_ENVIRONMENT": "Development" 8 | }, 9 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 10 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Web/runtimeconfig.template.json: -------------------------------------------------------------------------------- 1 | { 2 | "wasmHostProperties": { 3 | "perHostConfig": [ 4 | { 5 | "name": "browser", 6 | "html-path": "index.html", 7 | "Host": "browser" 8 | } 9 | ] 10 | } 11 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Web/wwwroot/app.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --sat: env(safe-area-inset-top); 3 | --sar: env(safe-area-inset-right); 4 | --sab: env(safe-area-inset-bottom); 5 | --sal: env(safe-area-inset-left); 6 | } 7 | 8 | /* HTML styles for the splash screen */ 9 | 10 | .highlight { 11 | color: white; 12 | font-size: 2.5rem; 13 | display: block; 14 | } 15 | 16 | .purple { 17 | color: #8b44ac; 18 | } 19 | 20 | .icon { 21 | opacity: 0.05; 22 | height: 35%; 23 | width: 35%; 24 | position: absolute; 25 | background-repeat: no-repeat; 26 | right: 0px; 27 | bottom: 0px; 28 | margin-right: 3%; 29 | margin-bottom: 5%; 30 | z-index: 5000; 31 | background-position: right bottom; 32 | pointer-events: none; 33 | } 34 | 35 | #avalonia-splash a { 36 | color: whitesmoke; 37 | text-decoration: none; 38 | } 39 | 40 | .center { 41 | display: flex; 42 | justify-content: center; 43 | align-items: center; 44 | height: 100vh; 45 | } 46 | 47 | #avalonia-splash { 48 | position: relative; 49 | height: 100%; 50 | width: 100%; 51 | color: whitesmoke; 52 | background: #1b2a4e; 53 | font-family: 'Inter'; 54 | background-position: center; 55 | background-size: cover; 56 | background-repeat: no-repeat; 57 | justify-content: center; 58 | align-items: center; 59 | } 60 | 61 | .splash-close { 62 | animation: fadeout 0.25s linear forwards; 63 | } 64 | 65 | @keyframes fadeout { 66 | 0% { 67 | opacity: 100%; 68 | } 69 | 70 | 100% { 71 | opacity: 0; 72 | visibility: collapse; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Web/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter.Web/wwwroot/favicon.ico -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Web/wwwroot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Eremex Demo Center v.1.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Loading ... 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.Web/wwwroot/main.js: -------------------------------------------------------------------------------- 1 | import { dotnet } from './_framework/dotnet.js' 2 | 3 | const is_browser = typeof window != "undefined"; 4 | if (!is_browser) throw new Error(`Expected to be running in a browser`); 5 | 6 | const dotnetRuntime = await dotnet 7 | .withDiagnosticTracing(false) 8 | .withApplicationArgumentsFromQuery() 9 | .create(); 10 | 11 | const config = dotnetRuntime.getConfig(); 12 | 13 | await dotnetRuntime.runMain(config.mainAssemblyName, [window.location.search]); 14 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using UIKit; 3 | using Avalonia; 4 | using Avalonia.Controls; 5 | using Avalonia.iOS; 6 | using Avalonia.Media; 7 | namespace DemoCenter.iOS; 8 | 9 | // The UIApplicationDelegate for the application. This class is responsible for launching the 10 | // User Interface of the application, as well as listening (and optionally responding) to 11 | // application events from iOS. 12 | [Register("AppDelegate")] 13 | #pragma warning disable CA1711 // Identifiers should not have incorrect suffix 14 | public partial class AppDelegate : AvaloniaAppDelegate 15 | #pragma warning restore CA1711 // Identifiers should not have incorrect suffix 16 | { 17 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) 18 | { 19 | return base.CustomizeAppBuilder(builder) 20 | .WithInterFont(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.iOS/DemoCenter.iOS.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Exe 4 | net8.0-ios 5 | 13.0 6 | enable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDisplayName 6 | testAndroid 7 | CFBundleIdentifier 8 | companyName.testAndroid 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1.0 13 | LSRequiresIPhoneOS 14 | 15 | MinimumOSVersion 16 | 13.0 17 | UIDeviceFamily 18 | 19 | 1 20 | 2 21 | 22 | UILaunchStoryboardName 23 | LaunchScreen 24 | UIRequiredDeviceCapabilities 25 | 26 | armv7 27 | 28 | UISupportedInterfaceOrientations 29 | 30 | UIInterfaceOrientationPortrait 31 | UIInterfaceOrientationPortraitUpsideDown 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace DemoCenter.iOS; 4 | 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, typeof(AppDelegate)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/App.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | [assembly: AssemblyDescription("")] 5 | [assembly: AssemblyConfiguration("")] 6 | [assembly: AssemblyCulture("")] 7 | 8 | [assembly: InternalsVisibleTo("DemoCenter.Desktop.UI.Tests")] -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Assets/EMXControls.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Assets/EMXControls.ico -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/CsvClasses/CsvColumnData.cs: -------------------------------------------------------------------------------- 1 | using System.Globalization; 2 | 3 | namespace DemoCenter.DemoData; 4 | 5 | public abstract class CsvColumn 6 | { 7 | public string Header { get; } 8 | 9 | public CsvColumn(string header) 10 | { 11 | Header = header; 12 | } 13 | public abstract void AddValue(string value); 14 | } 15 | 16 | public abstract class CsvColumn : CsvColumn 17 | { 18 | public List Data { get; } = new(); 19 | 20 | protected CsvColumn(string header) : base(header) 21 | { 22 | } 23 | } 24 | 25 | public class CsvDoubleColumn : CsvColumn 26 | { 27 | public CsvDoubleColumn(string header) : base(header) 28 | { 29 | } 30 | public override void AddValue(string value) => Data.Add(double.Parse(value.Trim(), CultureInfo.InvariantCulture)); 31 | } 32 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/CsvClasses/StockInfo.cs: -------------------------------------------------------------------------------- 1 | namespace DemoCenter.DemoData; 2 | 3 | public class StockInfo 4 | { 5 | public DateTime Date { get; } 6 | public double Close { get; } 7 | public double Open { get; } 8 | public double High { get; } 9 | public double Low { get; } 10 | public double Volume { get; } 11 | 12 | public StockInfo(DateTime date, double close, double open, double high, double low, double volume) 13 | { 14 | Date = date; 15 | Close = close; 16 | Open = open; 17 | High = high; 18 | Low = low; 19 | Volume = volume; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/CsvClasses/StockProduct.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace DemoCenter.DemoData.CsvClasses 9 | { 10 | public class StockProduct 11 | { 12 | public int Id { get; set; } 13 | 14 | public string Name { get; set; } 15 | 16 | public string Category { get; set; } 17 | 18 | public string Color { get; set; } 19 | 20 | public string Size { get; set; } 21 | 22 | public decimal Cost { get; set; } 23 | 24 | public int Quantity { get; set; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/OrderData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.Text; 4 | 5 | namespace DemoCenter.DemoData 6 | { 7 | public class OrderData 8 | { 9 | public static IList GenerateData(int count) 10 | { 11 | var random = new Random(); 12 | var data = new List(count); 13 | for (int i = 0; i < count; i++) 14 | { 15 | data.Add(new OrderData() 16 | { 17 | OrderId = i, 18 | Manager = EmployeesData.EmployeeNames[random.Next(EmployeesData.EmployeeNames.Count)], 19 | Count = random.Next(1000), 20 | Price = random.Next(1000), 21 | Date = DateTime.Today.AddDays(random.Next(200) - 100) 22 | }); 23 | } 24 | return data; 25 | } 26 | 27 | public int OrderId { get; private set; } 28 | 29 | public string Manager { get; set; } 30 | 31 | public int Count { get; set; } 32 | 33 | public decimal Price { get; set; } 34 | 35 | public decimal TotalPrice => Count * Price; 36 | 37 | public DateTime Date { get; set; } 38 | } 39 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/AlienSpeedster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/AlienSpeedster.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/AstroTrailblazer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/AstroTrailblazer.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/CyberRover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/CyberRover.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/InterstellarExplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/InterstellarExplorer.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsAdventureVan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsAdventureVan.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsCruiser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsCruiser.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsInterceptor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsInterceptor.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsOffroader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsOffroader.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsRoverX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsRoverX.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsUtilityTruck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/MarsUtilityTruck.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/MartianSprinter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/MartianSprinter.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/RedDustBuggy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/RedDustBuggy.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/RedPlanetCruiser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/RedPlanetCruiser.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/RedPlanetRacer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/RedPlanetRacer.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/SpaceHopper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/DemoData/csv/CarImages/SpaceHopper.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/convert.bat: -------------------------------------------------------------------------------- 1 | for /f %%f in ('dir /b *.png') do "C:\Program Files\ImageMagick-7.1.1-Q16\magick.exe" convert -quality 75 -colors 16 %%f %%f -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/CarImages/readme.txt: -------------------------------------------------------------------------------- 1 | -B8 :0@B8=:8 A35=5@=5=K =59@>A5BLN M i d j o u r n e y / s t y l e = " R a n d a l l M u n r o e " -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/mechs.csv: -------------------------------------------------------------------------------- 1 | Mech,Weight,Weapons 2 | Atlas,100 tons,AC/20,LRM-20,Medium Laser 3 | Mad Cat,75 tons,Ultra AC/5,ER PPC,LRM-10 4 | Timber Wolf,75 tons,ER PPC,Large Laser,SRM-6 5 | Daishi,100 tons,Gauss Rifle,ER PPC,LRM-15 6 | Hellbringer,65 tons,ER Large Laser,ER Medium Laser,Streak SRM-6 7 | Summoner,70 tons,ER Large Laser,LRM-20,Medium Pulse Laser 8 | Thor,70 tons,LRM-20,Large Laser,Medium Pulse Laser 9 | Warhawk,85 tons,Large Pulse Laser,ER PPC,Streak SRM-6 10 | Dire Wolf,100 tons,ER PPC,LRM-20,Medium Pulse Laser 11 | Stormcrow,55 tons,ER Medium Laser,Streak SRM-2,Ultra AC/5 12 | Black Hawk,55 tons,ER Large Laser,Streak SRM-6,Ultra AC/5 13 | Ryoken,55 tons,LRM-20,ER Medium Laser,Medium Pulse Laser 14 | Vulture,65 tons,ER PPC,Large Pulse Laser,Streak SRM-6 15 | Marauder,75 tons,ER Large Laser,LRM-15,Medium Pulse Laser 16 | Nova,35 tons,ER Medium Laser,Streak SRM-2,Ultra AC/5 17 | Catapult,65 tons,ER PPC,LRM-15,Medium Pulse Laser 18 | Cauldron-Born,60 tons,ER Large Laser,LRM-15,Medium Pulse Laser 19 | Hunchback IIC,50 tons,ER PPC,LRM-10,Medium Pulse Laser 20 | Bushwacker,55 tons,ER Large Laser,Streak SRM-6,Ultra AC/5 21 | Jenner IIC,35 tons,ER Medium Laser,Streak SRM-2,Ultra AC/5 -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/spacexlaunches.csv: -------------------------------------------------------------------------------- 1 | Launch Date, Mission Name, Launch Site 2 | January 1, 2022, Starlink 3-10, Cape Canaveral Space Force Station 3 | January 15, 2022, Transporter-4, Cape Canaveral Space Force Station 4 | February 5, 2022, Starlink 3-11, Cape Canaveral Space Force Station 5 | February 20, 2022, Starlink 3-12, Cape Canaveral Space Force Station 6 | March 10, 2022, Starlink 3-13, Cape Canaveral Space Force Station 7 | March 25, 2022, Starlink 3-14, Cape Canaveral Space Force Station 8 | April 15, 2022, Starlink 3-15, Cape Canaveral Space Force Station 9 | April 30, 2022, Starlink 3-16, Cape Canaveral Space Force Station 10 | May 20, 2022, Starlink 3-17, Cape Canaveral Space Force Station 11 | June 5, 2022, Starlink 3-18, Cape Canaveral Space Force Station 12 | June 25, 2022, Starlink 3-19, Cape Canaveral Space Force Station 13 | July 10, 2022, Starlink 3-20, Cape Canaveral Space Force Station 14 | July 30, 2022, Starlink 3-21, Cape Canaveral Space Force Station 15 | August 15, 2022, Starlink 3-22, Cape Canaveral Space Force Station 16 | August 30, 2022, Starlink 3-23, Cape Canaveral Space Force Station 17 | September 20, 2022, Starlink 3-24, Cape Canaveral Space Force Station 18 | October 5, 2022, Starlink 3-25, Cape Canaveral Space Force Station 19 | October 25, 2022, Starlink 3-26, Cape Canaveral Space Force Station 20 | November 10, 2022, Starlink 3-27, Cape Canaveral Space Force Station 21 | November 30, 2022, Starlink 3-28, Cape Canaveral Space Force Station 22 | December 15, 2022, Starlink 3-29, Cape Canaveral Space Force Station 23 | December 30, 2022, Starlink 3-30, Cape Canaveral Space Force Station -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/yachtNames.csv: -------------------------------------------------------------------------------- 1 | Name 2 | Serenity Seeker 3 | Aquamarine Dream 4 | Ocean Odyssey 5 | Starlit Voyager 6 | Blissful Breeze 7 | Majestic Mariner 8 | Celestial Seas 9 | Pearl Serenade 10 | Nautical Nirvana 11 | Azure Horizon 12 | Enchanted Elegance 13 | Solstice Splendor 14 | Serendipity Shores 15 | Neptune's Haven 16 | Tranquil Tides 17 | Midnight Mirage 18 | Seabreeze Symphony 19 | Enigma Explorer 20 | Harmony Haven 21 | Radiant Rhapsody -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/DemoData/csv/yachts.csv: -------------------------------------------------------------------------------- 1 | Yacht Name,Length (ft),Number of Cabins,Maximum Speed (knots),Cruising Range (nm),Price (USD),Year of Release,Builder,Designer,Flag 2 | Yacht A,150,6,30,4000,10,000,000,2020,Builders Inc.,Design Studio XYZ,USA 3 | Yacht B,120,5,25,3500,8,000,000,2019,Yacht Builders Ltd.,Design Studio ABC,UK 4 | Yacht C,140,6,28,3800,9,500,000,2021,Marine Constructors,Design Studio PQR,France 5 | Yacht D,130,5,26,3600,8,500,000,2018,Boat Makers Co.,Design Studio LMN,Italy 6 | Yacht E,160,7,32,4200,11,000,000,2022,Luxury Yacht Builders,Design Studio RST,Germany 7 | Yacht F,110,4,24,3200,7,500,000,2017,Yachting Industries,Design Studio UVW,USA 8 | Yacht G,170,8,34,4400,12,000,000,2023,Yacht Builders Ltd.,Design Studio XYZ,UK 9 | Yacht H,150,6,30,4000,10,000,000,2020,Marine Constructors,Design Studio ABC,France 10 | Yacht I,120,5,25,3500,8,000,000,2019,Builders Inc.,Design Studio PQR,USA 11 | Yacht J,140,6,28,3800,9,500,000,2021,Boat Makers Co.,Design Studio LMN,Italy 12 | Yacht K,130,5,26,3600,8,500,000,2018,Luxury Yacht Builders,Design Studio RST,Germany 13 | Yacht L,160,7,32,4200,11,000,000,2022,Yachting Industries,Design Studio UVW,USA 14 | Yacht M,110,4,24,3200,7,500,000,2017,Yacht Builders Ltd.,Design Studio XYZ,UK 15 | Yacht N,170,8,34,4400,12,000,000,2023,Marine Constructors,Design Studio ABC,France 16 | Yacht O,150,6,30,4000,10,000,000,2020,Builders Inc.,Design Studio PQR,USA 17 | Yacht P,120,5,25,3500,8,000,000,2019,Boat Makers Co.,Design Studio LMN,Italy 18 | Yacht Q,140,6,28,3800,9,500,000,2021,Luxury Yacht Builders,Design Studio RST,Germany 19 | Yacht R,130,5,26,3600,8,500,000,2018,Yachting Industries,Design Studio UVW,USA 20 | Yacht S,160,7,32,4200,11,000,000,2022,Yacht Builders Ltd.,Design Studio XYZ,UK 21 | Yacht T,110,4,24,3200,7,500,000,2017,Marine Constructors,Design Studio ABC,France -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Helpers/ThemedSyntaxHighlighter.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Xml; 3 | using Avalonia.Markup.Xaml; 4 | using AvaloniaEdit.Highlighting; 5 | using AvaloniaEdit.Highlighting.Xshd; 6 | 7 | namespace DemoCenter.Helpers; 8 | 9 | public class ThemedSyntaxHighlighter : MarkupExtension { 10 | public ThemedSyntaxHighlighter(string highlightName) { 11 | string themeName = App.Current.GetValue(App.RequestedThemeVariantProperty).ToString(); 12 | string resourceName = $"DemoCenter.Resources.Highlighters.{highlightName}-{themeName}.xshd"; 13 | using(var stream = Assembly.GetExecutingAssembly() 14 | ?.GetManifestResourceStream(resourceName)) { 15 | HighlightingDefinition = HighlightingLoader.Load(new XmlTextReader(stream), null); 16 | } 17 | } 18 | 19 | public IHighlightingDefinition HighlightingDefinition { get; set; } 20 | public override object ProvideValue(IServiceProvider serviceProvider) { 21 | return this; 22 | } 23 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/BarsGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using DemoCenter.ViewModels; 7 | using Eremex.AvaloniaUI.Controls.Common; 8 | 9 | namespace DemoCenter.ProductsData 10 | { 11 | public static class BarsGroupInfo 12 | { 13 | internal static List Create() 14 | { 15 | return new List() 16 | { 17 | //new PageInfo(name: "Overview", title: "Overview", 18 | //description: "Bars overview sample description", 19 | //viewModelGetter: () => new BarsOverviewPageViewModel()), 20 | 21 | new PageInfo(name: "IDE Layout", title: "IDE Layout", 22 | viewModelGetter: () => new IdeLayoutPageViewModel(), 23 | descriptionGetter: () => Resources.TheDockManagerComponentAllowsYouToImplemen, showInWeb: false), 24 | 25 | new PageInfo(name: "Toolbar & Menu", title: "Toolbar & Menu", 26 | viewModelGetter: () => new ToolbarAndMenuPageViewModel(), descriptionGetter: () => Resources.TheToolbarManagerComponentAllowsYouToImple), 27 | 28 | //new PageInfo(name: "Bar Items", title: "Bar Items", 29 | //description : "", 30 | //viewModelGetter: () => new BarItemsPageViewModel()), 31 | 32 | new PageInfo(name: "Context Menu", title: "Context Menu", 33 | viewModelGetter: () => new ContextMenuPageViewModel(), descriptionGetter: () => Resources.TheToolbarsMenuLibraryContainsAPopupMenuCo), 34 | }; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/CommonControlsGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace DemoCenter.ProductsData 10 | { 11 | public static class CommonControlsGroupInfo 12 | { 13 | internal static List Create() 14 | { 15 | return new List() 16 | { 17 | new PageInfo(name: "TabControl", title: "TabControl", 18 | viewModelGetter: () => new TabControlPageViewModel(), descriptionGetter: () => Resources.EremexTabControlCanOrganizeTheContentsOfAB), 19 | 20 | new PageInfo(name: "MessageBox", title: "MessageBox", 21 | viewModelGetter: () => new MessageBoxPageViewModel(), 22 | descriptionGetter: () => Resources.TheMxMessageBoxDialogAllowsYouToDisplayMes, 23 | introduced: new VersionInfo(1, 1), showInWeb: false), 24 | 25 | new PageInfo(name: "SplitContainerControl", title: "SplitContainerControl", 26 | viewModelGetter: () => new SplitContainerControlPageViewModel(), descriptionGetter: () => Resources.SplitContainerControlAllowsYouToPlaceConte), 27 | }; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/DeveloperToolsGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | 3 | namespace DemoCenter.ProductsData; 4 | 5 | public class DeveloperToolsGroupInfo 6 | { 7 | internal static List Create() 8 | { 9 | return new List() 10 | { 11 | new PageInfo(name: "SVG Icons Browser", title: "Svg Icons Browser", 12 | viewModelGetter: () => new SvgIconsBrowserViewModel()) 13 | }; 14 | } 15 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/GroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | 3 | namespace DemoCenter.ProductsData; 4 | 5 | public class GroupInfo : ProductInfoBase 6 | { 7 | public List Pages { get; } 8 | public override bool HasChildren => Pages.Count > 0; 9 | 10 | public GroupInfo(string name, string title, Func viewModelGetter, Func descriptionGetter, List pages, VersionInfo? introduced = null, VersionInfo? updated = null, bool showInWeb = true) : base(name, title, viewModelGetter, descriptionGetter, introduced, updated, showInWeb) 11 | { 12 | Pages = pages; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/HeatmapGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | 3 | namespace DemoCenter.ProductsData; 4 | 5 | public static class HeatmapGroupInfo 6 | { 7 | internal static List Create() 8 | { 9 | return new List 10 | { 11 | new (name: "Color Providers", title: "Color Providers", 12 | viewModelGetter: () => new HeatmapColorProvidersViewModel(), 13 | descriptionGetter: () => Resources.AHeatmapRendersA2DimensionalArrayOfValuesA, introduced: new VersionInfo(1, 1)), 14 | 15 | new(name: "Real-Time Data", title: "Real-Time Data", 16 | viewModelGetter: () => new HeatmapRealTimeViewModel(), 17 | descriptionGetter: () => Resources.InThisExampleTheHeatmapControlUsesCustomCo, introduced: new VersionInfo(1, 1), showInWeb: false), 18 | }; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/PageInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace DemoCenter.ProductsData; 9 | 10 | public class PageInfo : ProductInfoBase 11 | { 12 | public override bool HasChildren => false; 13 | 14 | public PageInfo(string name, string title, Func viewModelGetter, Func descriptionGetter = null, VersionInfo? introduced = null, VersionInfo? updated = null, bool showInWeb = true) : base(name, title, viewModelGetter, descriptionGetter, introduced, updated, showInWeb) 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/PropertyGridGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace DemoCenter.ProductsData 10 | { 11 | public static class PropertyGridGroupInfo 12 | { 13 | internal static List Create() 14 | { 15 | return new List() 16 | { 17 | new PageInfo(name: "Data Editors", title: "Data Editors", viewModelGetter: () => new PropertyGridDataEditorsViewModel(), descriptionGetter: () => Resources.PropertyGridAutomaticallyDetectsTheTypeOfB), 18 | new PageInfo(name: "Tab Items", title: "Tab Items", viewModelGetter: () => new PropertyGridTabItemsViewModel(), descriptionGetter: () => Resources.PropertyGridTabRowsAllowYouToGroupASetOfFi) 19 | }; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/RibbonGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | 3 | namespace DemoCenter.ProductsData 4 | { 5 | public static class RibbonGroupInfo 6 | { 7 | internal static List Create() 8 | { 9 | return new List() 10 | { 11 | new PageInfo(name: "WordPad Example", title: "WordPad Example", 12 | viewModelGetter: () => new WordPadExampleViewModel(), 13 | descriptionGetter: () => string.Format( Resources.RibbonControlAllowsYouToIntegrateMicrosoft, Environment.NewLine + Environment.NewLine, Environment.NewLine+ Environment.NewLine), introduced: new VersionInfo(1, 1), updated: null, showInWeb: false) 14 | }; 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/SmithChartGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | 3 | namespace DemoCenter.ProductsData; 4 | 5 | public static class SmithChartGroupInfo 6 | { 7 | internal static List Create() 8 | { 9 | return new List 10 | { 11 | new (name: "Point", title: "Point Series View", 12 | viewModelGetter: () => new SmithPointSeriesViewViewModel(), 13 | descriptionGetter: () => Resources.ThisExampleDemonstratesThePointSeriesViewW2, introduced: new VersionInfo(1, 0)), 14 | 15 | new (name: "Scatter Line", title: "Scatter Line Series View", 16 | viewModelGetter: () => new SmithLineSeriesViewViewModel(), 17 | descriptionGetter: () => Resources.TheScatterLineSeriesViewIsUsefulWhenYouNee2, introduced: new VersionInfo(1, 0)) 18 | }; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/StandardControlsGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace DemoCenter.ProductsData 10 | { 11 | public static class StandardControlsGroupInfo 12 | { 13 | internal static List Create() 14 | { 15 | return new List() 16 | { 17 | new PageInfo(name: "Overview", title: "Overview", 18 | viewModelGetter: () => new StandardControlsOverviewPageViewModel()), 19 | 20 | new PageInfo(name: "Primitives", title: "Primitives", 21 | viewModelGetter: () => new PrimitivesPageViewModel()), 22 | 23 | new PageInfo(name: "ProgressBar", title: "ProgressBar", 24 | viewModelGetter: () => new ProgressBarPageViewModel()), 25 | 26 | new PageInfo(name: "Slider", title: "Slider", 27 | viewModelGetter: () => new SliderPageViewModel()), 28 | }; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ProductsData/TreeListGroupInfo.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.ViewModels; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace DemoCenter.ProductsData 10 | { 11 | public static class TreeListGroupInfo 12 | { 13 | internal static List Create() 14 | { 15 | return new List() 16 | { 17 | new PageInfo(name: "Filter & Search", title: "Filter & Search", 18 | viewModelGetter: () => new TreeListFilteringPageViewModel(), 19 | descriptionGetter: () => Resources.TheTreeListSAutoFilterRowDisplayedAtTheTop, showInWeb: false), 20 | 21 | new PageInfo(name: "Data Editors", title: "Data Editors", 22 | viewModelGetter: () => new TreeListDataEditorsPageViewModel(), 23 | descriptionGetter: () => Resources.EremexEditorsAreUsedInTreeListCellsByDefau, showInWeb: false), 24 | 25 | new PageInfo(name: "Folder Browser", title: "Folder Browser", 26 | viewModelGetter: () => new FolderBrowserPageViewModel(), descriptionGetter: () => Resources.YouCanBindTreeListToAHierarchicalDataSourc), 27 | 28 | new PageInfo(name: "Multiple Node Selection", title: "Multiple Node Selection", 29 | viewModelGetter: () => new TreeListMultipleSelectionPageViewModel(), descriptionGetter: () => Resources.TheTreeListAndTreeViewControlsSupportMulti, introduced: new VersionInfo(1, 0)), 30 | }; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Materials/AlienPanels.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Materials/AlienPanels.zip -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Materials/BricksMortar.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Materials/BricksMortar.zip -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Materials/CloudyVeinedQuartzLight.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Materials/CloudyVeinedQuartzLight.zip -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Materials/LavaAndRock.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Materials/LavaAndRock.zip -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Materials/RectanglePolishedTile.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Materials/RectanglePolishedTile.zip -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Materials/RustedSteel.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Materials/RustedSteel.zip -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Materials/SpaceShipMonitor.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Materials/SpaceShipMonitor.zip -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Models/ddBox-C1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Models/ddBox-C1.zip -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Graphics3D/Textures/Galaxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Graphics3D/Textures/Galaxy.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Png/hlsp_jwst-ero_jwst_miri_carina_f1130w_v1_i2d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/DemoCenter/DemoCenter/Resources/Png/hlsp_jwst-ero_jwst_miri_carina_f1130w_v1_i2d.png -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/SearchPanel.axaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/SharedResources.axaml: -------------------------------------------------------------------------------- 1 | 3 | 16 4 | 0,8,0,0 5 | 0,0,0,8 6 | 0,4,0,0 7 | 4,0,0,0 8 | 8,0,0,0 9 | 6 0 10 | 8,0,8,0 11 | 12 | 4 13 | 3,6,3,6 14 | 8,8,8,8 15 | 8,0,8,8 16 | 17 | 0,4,0,4 18 | 0,0,0,4 19 | 0,4,0,0 20 | 8,4,0,4 21 | 8,0,0,4 22 | 8,4,0,0 23 | 24 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/Svg/Ring.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Resources/SvgIconsBrowserViewResources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | text/microsoft-resx 11 | 12 | 13 | 1.3 14 | 15 | 16 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 17 | 18 | 19 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 20 | 21 | 22 | Categories 23 | 24 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewLocator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Controls.Templates; 4 | using Avalonia.Media; 5 | using Eremex.AvaloniaUI.Controls.Common; 6 | 7 | namespace DemoCenter; 8 | 9 | public class ViewLocator : IDataTemplate 10 | { 11 | public Control Build(object data) 12 | { 13 | if (data is null) 14 | return null; 15 | 16 | var name = data.GetType().FullName!.Replace("ViewModel", "View"); 17 | var type = Type.GetType(name); 18 | 19 | if (type != null) 20 | { 21 | return (Control)Activator.CreateInstance(type)!; 22 | } 23 | 24 | return new TextBlock { Text = name + " not found!", Foreground = new SolidColorBrush(Colors.Red), 25 | HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, 26 | VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center}; 27 | } 28 | 29 | public bool Match(object data) 30 | { 31 | return data is ViewModelBase; 32 | } 33 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Bars/BarItemsPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | using Avalonia; 9 | 10 | using CommunityToolkit.Mvvm.ComponentModel; 11 | using Eremex.AvaloniaUI.Controls.Common; 12 | 13 | namespace DemoCenter.ViewModels 14 | { 15 | public partial class BarItemsPageViewModel : PageViewModelBase 16 | { 17 | public BarItemsPageViewModel() 18 | { 19 | } 20 | static List glyphSizes; 21 | public static List GlyphSizes 22 | { 23 | get 24 | { 25 | if (glyphSizes == null) 26 | glyphSizes = new List { new Size(48, 48), new Size(32, 32), new Size(20, 20), new Size(16, 16) }; 27 | return glyphSizes; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Bars/BarsGroupViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using CommunityToolkit.Mvvm.ComponentModel; 8 | using Eremex.AvaloniaUI.Controls.Common; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class BarsGroupViewModel : PageViewModelBase 13 | { 14 | public BarsGroupViewModel() 15 | { 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Bars/BarsOverviewPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using CommunityToolkit.Mvvm.ComponentModel; 8 | using Eremex.AvaloniaUI.Controls.Common; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class BarsOverviewPageViewModel : PageViewModelBase 13 | { 14 | public BarsOverviewPageViewModel() 15 | { 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianAreaSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianAreaSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | static double Sin(double argument) => Math.Sin(argument); 11 | static double Cos(double argument) => Math.Cos(argument); 12 | 13 | const int ItemsCount = 100; 14 | const double Step = 4 * Math.PI / ItemsCount; 15 | 16 | [ObservableProperty] ObservableCollection series = new() 17 | { 18 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new FormulaDataAdapter(0, Step, ItemsCount, Sin)}, 19 | new SeriesViewModel { Color = Color.FromArgb(255, 0, 120, 122), DataAdapter = new FormulaDataAdapter(0, Step, ItemsCount, Cos)}, 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianCandlestickSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | using Eremex.AvaloniaUI.Charts; 4 | 5 | namespace DemoCenter.ViewModels; 6 | 7 | public partial class CartesianCandlestickSeriesViewViewModel : ChartsPageViewModel 8 | { 9 | [ObservableProperty] CandlestickDataAdapter stockData; 10 | [ObservableProperty] SortedDateTimeDataAdapter volumeData; 11 | 12 | public CartesianCandlestickSeriesViewViewModel() 13 | { 14 | var data = CsvSources.Stock; 15 | var arguments = new List(data.Count); 16 | var open = new List(data.Count); 17 | var high = new List(data.Count); 18 | var low = new List(data.Count); 19 | var close = new List(data.Count); 20 | var volume = new List(data.Count); 21 | for (var i = data.Count - 1; i >= 0; i--) 22 | { 23 | arguments.Add(data[i].Date); 24 | open.Add(data[i].Open); 25 | high.Add(data[i].High); 26 | low.Add(data[i].Low); 27 | close.Add(data[i].Close); 28 | volume.Add(data[i].Volume); 29 | } 30 | StockData = new CandlestickDataAdapter(arguments, open, high, low, close); 31 | volumeData = new SortedDateTimeDataAdapter(arguments, volume); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianChartLargeDataPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianChartLargeDataPageViewModel : ChartsPageViewModel 9 | { 10 | static double Formula(double argument, int index) => Math.Sin(argument) + 11 | Math.Sin(argument / 100.0) + 12 | 30 * Math.Sin(argument / 1000.0) + 13 | 1000 * (1 + 0.1 * index % 10) * 14 | Math.Sin(argument / 100000.0 + Math.PI / 6 * index); 15 | 16 | const int ItemsCount = 1_000_000; 17 | 18 | [ObservableProperty] ObservableCollection series = new() 19 | { 20 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new FormulaDataAdapter(0, 1, ItemsCount, arg => Formula(arg, 0))}, 21 | new SeriesViewModel { Color = Color.FromArgb(255, 0, 120, 122), DataAdapter = new FormulaDataAdapter(0, 1, ItemsCount, arg => Formula(arg, 1))}, 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianChartRealtimePageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using Avalonia.Threading; 4 | using CommunityToolkit.Mvvm.ComponentModel; 5 | using DemoCenter.ViewModels.DataAdapters; 6 | 7 | namespace DemoCenter.ViewModels; 8 | 9 | public partial class CartesianChartRealtimePageViewModel : ChartsPageViewModel 10 | { 11 | static readonly Color[] colors = new[] 12 | { 13 | Color.FromArgb(255, 204, 55, 28), 14 | Color.FromArgb(255, 255, 106, 0), 15 | Color.FromArgb(255, 0, 148, 255), 16 | Color.FromArgb(255, 119, 133, 255), 17 | Color.FromArgb(255, 0, 127, 128), 18 | Color.FromArgb(255, 91, 171, 171) 19 | }; 20 | 21 | readonly DispatcherTimer timer = new(DispatcherPriority.Background); 22 | readonly RealtimeDataGenerator generator = new(6, 500, 35); 23 | 24 | [ObservableProperty] ObservableCollection series = new(); 25 | 26 | public CartesianChartRealtimePageViewModel() 27 | { 28 | generator.GenerateInitialData(); 29 | timer.Tick += (_, _) => generator.UpdateAdapters(); 30 | timer.Interval = TimeSpan.FromMilliseconds(2); 31 | 32 | for (int i = 0; i < generator.Adapters.Length; i++) 33 | series.Add(new SeriesViewModel { Color = colors[i], DataAdapter = generator.Adapters[i] }); 34 | } 35 | public void Start() 36 | { 37 | generator.Start(); 38 | timer.Start(); 39 | } 40 | public void Stop() 41 | { 42 | generator.Stop(); 43 | timer.Stop(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianLineSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianLineSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | static double Sin(double argument) => Math.Sin(argument); 11 | static double Cos(double argument) => Math.Cos(argument); 12 | 13 | const int ItemsCount = 100; 14 | const double Step = 4 * Math.PI / ItemsCount; 15 | 16 | [ObservableProperty] ObservableCollection series = new() 17 | { 18 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new FormulaDataAdapter(0, Step, ItemsCount, Sin)}, 19 | new SeriesViewModel { Color = Color.FromArgb(255, 0, 120, 122), DataAdapter = new FormulaDataAdapter(0, Step, ItemsCount, Cos)}, 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianPointSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using DemoCenter.ViewModels.DataAdapters; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianPointSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | [ObservableProperty] private ObservableCollection series = new() 11 | { 12 | new SeriesViewModel { Color = Color.FromArgb(64, 189, 20, 54), DataAdapter = new ClusterDataAdapter(2000, -1000, 2000, -1000, 10000) }, 13 | new SeriesViewModel { Color = Color.FromArgb(64, 0, 120, 122), DataAdapter = new ClusterDataAdapter(1000, -2000, 1000, -2000, 10000) } 14 | }; 15 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianRangeAreaSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianRangeAreaSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | readonly Random random = new(); 11 | 12 | [ObservableProperty] Color color = Color.FromArgb(255, 67, 201, 39); 13 | [ObservableProperty] Color color1 = Color.FromArgb(255, 189, 20, 54); 14 | [ObservableProperty] Color color2 = Color.FromArgb(255, 0, 120, 122); 15 | [ObservableProperty] NumericRangeDataAdapter dataAdapter = new(); 16 | 17 | public CartesianRangeAreaSeriesViewViewModel() 18 | { 19 | for (int i = 0; i < 20; i++) 20 | { 21 | double argument = i; 22 | double value1 = random.NextDouble() + 1.5; 23 | double value2 = random.NextDouble() + 0.5; 24 | if (i is > 6 and < 13) 25 | DataAdapter.Add(argument, value2, value1); 26 | else 27 | DataAdapter.Add(argument, value1, value2); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianScatterLineSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Media; 2 | using CommunityToolkit.Mvvm.ComponentModel; 3 | using Eremex.AvaloniaUI.Charts; 4 | 5 | namespace DemoCenter.ViewModels; 6 | 7 | public partial class CartesianScatterLineSeriesViewViewModel : ChartsPageViewModel 8 | { 9 | const int ItemsCount = 500; 10 | 11 | [ObservableProperty] SeriesViewModel series; 12 | 13 | public CartesianScatterLineSeriesViewViewModel() 14 | { 15 | var data = new List<(double, double)>(ItemsCount); 16 | for (int i = 0; i < ItemsCount; i++) 17 | { 18 | double factor = 0.1 * i; 19 | data.Add((factor * Math.Cos(factor), factor * Math.Sin(factor))); 20 | } 21 | 22 | Series = new() { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new ScatterDataAdapter(data) }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianSideBySideBarSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianSideBySideBarSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | [ObservableProperty] private ObservableCollection series = new(); 11 | 12 | public CartesianSideBySideBarSeriesViewViewModel() 13 | { 14 | var random = new Random(4); 15 | var start = DateTime.Now.AddMonths(-1); 16 | SortedDateTimeDataAdapter adapter1 = new(); 17 | SortedDateTimeDataAdapter adapter2 = new(); 18 | for (int i = 0; i < 12; i++) 19 | { 20 | var argument = start.AddDays(i); 21 | adapter1.Add(argument, random.NextDouble() * 100 - 30); 22 | adapter2.Add(argument, random.NextDouble() * 100 - 30); 23 | } 24 | 25 | series.Add(new SeriesViewModel { Color = Color.FromArgb(180, 189, 20, 54), DataAdapter = adapter1 }); 26 | series.Add(new SeriesViewModel { Color = Color.FromArgb(180, 0, 120, 122), DataAdapter = adapter2 }); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianSideBySideRangeBarSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianSideBySideRangeBarSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | [ObservableProperty] private ObservableCollection series = new(); 11 | 12 | public CartesianSideBySideRangeBarSeriesViewViewModel() 13 | { 14 | var random = new Random(10); 15 | NumericRangeDataAdapter adapter1 = new(); 16 | NumericRangeDataAdapter adapter2 = new(); 17 | for (int i = 0; i < 12; i++) 18 | { 19 | adapter1.Add(i, random.NextDouble() * 100, random.NextDouble() * 100); 20 | adapter2.Add(i, random.NextDouble() * 100, random.NextDouble() * 100); 21 | } 22 | 23 | series.Add(new SeriesViewModel { Color = Color.FromArgb(180, 189, 20, 54), DataAdapter = adapter1 }); 24 | series.Add(new SeriesViewModel { Color = Color.FromArgb(180, 0, 120, 122), DataAdapter = adapter2 }); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianStepAreaSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianStepAreaSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | static Random Random = new(1); 11 | static double Formula1(double argument) => Random.NextDouble() * 20 + 10; 12 | static double Formula2(double argument) => Random.NextDouble() * 20; 13 | 14 | const int ItemsCount = 10; 15 | 16 | [ObservableProperty] ObservableCollection series = new() 17 | { 18 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new FormulaDataAdapter(0, 1, ItemsCount, Formula1)}, 19 | new SeriesViewModel { Color = Color.FromArgb(255, 0, 120, 122), DataAdapter = new FormulaDataAdapter(0, 1, ItemsCount, Formula2)}, 20 | }; 21 | 22 | public CartesianStepAreaSeriesViewViewModel() 23 | { 24 | Random = new Random(1); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianStepLineSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianStepLineSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | static Random Random = new(1); 11 | static double Formula1(double argument) => Random.NextDouble() * 20; 12 | static double Formula2(double argument) => Random.NextDouble() * 20 - 10; 13 | 14 | const int ItemsCount = 10; 15 | 16 | [ObservableProperty] ObservableCollection series = new() 17 | { 18 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new FormulaDataAdapter(0, 1, ItemsCount, Formula1)}, 19 | new SeriesViewModel { Color = Color.FromArgb(255, 0, 120, 122), DataAdapter = new FormulaDataAdapter(0, 1, ItemsCount, Formula2)}, 20 | }; 21 | 22 | public CartesianStepLineSeriesViewViewModel() 23 | { 24 | Random = new Random(1); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/CartesianStripsAndConstantLinesViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class CartesianStripsAndConstantLinesViewModel : ChartsPageViewModel 9 | { 10 | [ObservableProperty] SeriesViewModel series = new() { Color = Color.FromArgb(255, 0, 120, 122), DataAdapter = CreateAdapter() }; 11 | [ObservableProperty] ObservableCollection constantLines = new(); 12 | 13 | static ISeriesDataAdapter CreateAdapter() 14 | { 15 | const int pointsCount = 250; 16 | 17 | var random = new Random(0); 18 | var arguments = new List(pointsCount); 19 | var values = new List(pointsCount); 20 | double startTemperature = 30; 21 | for (int i = 0; i < pointsCount; i++) { 22 | arguments.Add(TimeSpan.FromSeconds(i)); 23 | double temperature = startTemperature + (random.NextDouble() - 0.5) * 10; 24 | if (temperature > 90) 25 | temperature -= 20; 26 | if (temperature < 20) 27 | temperature += 10; 28 | values.Add(temperature); 29 | startTemperature = temperature; 30 | } 31 | 32 | return new SortedTimeSpanDataAdapter(arguments, values); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/ChartElementViewModels/AxisViewModel.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Media; 2 | using CommunityToolkit.Mvvm.ComponentModel; 3 | using Eremex.AvaloniaUI.Charts; 4 | 5 | namespace DemoCenter.ViewModels; 6 | 7 | public partial class AxisViewModel : ObservableObject 8 | { 9 | [ObservableProperty] AxisPosition position; 10 | [ObservableProperty] string title; 11 | [ObservableProperty] string key; 12 | [ObservableProperty] bool showTitle = true; 13 | [ObservableProperty] bool showLabels = true; 14 | [ObservableProperty] bool showInterlacing; 15 | [ObservableProperty] bool? showMajorGridlines = false; 16 | [ObservableProperty] bool? showMinorGridlines = false; 17 | [ObservableProperty] int minorCount = 3; 18 | [ObservableProperty] Color color; 19 | 20 | public override string ToString() => Title; 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/ChartElementViewModels/ConstantLineViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | 3 | namespace DemoCenter.ViewModels; 4 | 5 | public partial class ConstantLineViewModel : ObservableObject 6 | { 7 | [ObservableProperty] string title; 8 | [ObservableProperty] object axisValue; 9 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/ChartElementViewModels/CustomLabelFormatter.cs: -------------------------------------------------------------------------------- 1 | using Eremex.AvaloniaUI.Charts; 2 | 3 | namespace DemoCenter.ViewModels; 4 | 5 | public class CustomLabelFormatter : IAxisLabelFormatter 6 | { 7 | readonly Func formatFunc; 8 | 9 | public CustomLabelFormatter(Func formatFunc) 10 | { 11 | this.formatFunc = formatFunc; 12 | } 13 | public string Format(object value) => formatFunc(value); 14 | } 15 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/ChartElementViewModels/LogarithmicAxisViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | 3 | namespace DemoCenter.ViewModels; 4 | 5 | public partial class LogarithmicAxisViewModel : ObservableObject 6 | { 7 | [ObservableProperty] double? logarithmicBase; 8 | } 9 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/ChartElementViewModels/SeriesViewModel.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Media; 2 | using CommunityToolkit.Mvvm.ComponentModel; 3 | using Eremex.AvaloniaUI.Charts; 4 | 5 | namespace DemoCenter.ViewModels; 6 | 7 | public partial class SeriesViewModel : ObservableObject 8 | { 9 | [ObservableProperty] string axisXKey; 10 | [ObservableProperty] string axisYKey; 11 | [ObservableProperty] Color color; 12 | [ObservableProperty] ISeriesDataAdapter dataAdapter; 13 | } 14 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/ChartsPageViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace DemoCenter.ViewModels; 2 | 3 | public partial class ChartsPageViewModel : PageViewModelBase 4 | { 5 | public ChartsPageViewModel() 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/PolarAreaSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class PolarAreaSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | static double Cos(double argument) => Math.Cos(4 * Math.PI * argument / 180) + 1; 11 | 12 | const int ItemsCount = 180; 13 | const double Step = 360d / ItemsCount; 14 | 15 | [ObservableProperty] ObservableCollection series = new() 16 | { 17 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new FormulaDataAdapter(0, Step, ItemsCount + 1, Cos)}, 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/PolarLineSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class PolarLineSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | static double Cos(double argument) => Math.Cos(4 * Math.PI * argument / 180); 11 | 12 | const int ItemsCount = 180; 13 | const double Step = 360d / ItemsCount; 14 | 15 | [ObservableProperty] ObservableCollection series = new() 16 | { 17 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new FormulaDataAdapter(0, Step, ItemsCount + 1, Cos)}, 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/PolarPointSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class PolarPointSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | static double Cos(double argument) => Math.Cos(4 * Math.PI * argument / 180); 11 | 12 | const int ItemsCount = 180; 13 | const double Step = 360d / ItemsCount; 14 | 15 | [ObservableProperty] ObservableCollection series = new() 16 | { 17 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new FormulaDataAdapter(0, Step, ItemsCount, Cos)}, 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/PolarRangeAreaSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Media; 2 | using CommunityToolkit.Mvvm.ComponentModel; 3 | using Eremex.AvaloniaUI.Charts; 4 | 5 | namespace DemoCenter.ViewModels; 6 | 7 | public partial class PolarRangeAreaSeriesViewViewModel : ChartsPageViewModel 8 | { 9 | [ObservableProperty] Color color = Color.FromArgb(255, 67, 201, 39); 10 | [ObservableProperty] Color color1 = Color.FromArgb(255, 189, 20, 54); 11 | [ObservableProperty] Color color2 = Color.FromArgb(255, 0, 120, 122); 12 | [ObservableProperty] NumericRangeDataAdapter dataAdapter = new(); 13 | 14 | public PolarRangeAreaSeriesViewViewModel() 15 | { 16 | for (int i = 0; i <= 360; i += 5) 17 | { 18 | double value1 = Math.Sin(Math.PI * i / 720); 19 | double value2 = Math.Cos(Math.PI * i / 720); 20 | DataAdapter.Add(i, value1, value2); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/PolarScatterLineSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using Eremex.AvaloniaUI.Charts; 5 | 6 | namespace DemoCenter.ViewModels; 7 | 8 | public partial class PolarScatterLineSeriesViewViewModel : ChartsPageViewModel 9 | { 10 | static IEnumerable<(double, double)> CreateFoliumPart(int minAngle, int maxAngle) 11 | { 12 | for (int i = minAngle; i <= maxAngle; i+=5) { 13 | double angleRad = i * Math.PI / 180; 14 | double sin = Math.Sin(angleRad); 15 | double cos = Math.Cos(angleRad); 16 | double r = 3.0 * sin * cos / (Math.Pow(sin, 3.0) + Math.Pow(cos, 3.0)); 17 | if (r is >= 0 and <= 3) 18 | yield return (i, r); 19 | } 20 | } 21 | static ScatterDataAdapter CreateFolium() 22 | { 23 | var points = new List<(double, double)>(); 24 | points.AddRange(CreateFoliumPart(120, 180)); 25 | points.AddRange(CreateFoliumPart(0, 90)); 26 | points.AddRange(CreateFoliumPart(270, 330)); 27 | return new ScatterDataAdapter(points); 28 | } 29 | 30 | [ObservableProperty] ObservableCollection series = new() 31 | { 32 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = CreateFolium() } 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/SmithLineSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using DemoCenter.ViewModels.DataAdapters; 5 | using Eremex.AvaloniaUI.Charts; 6 | 7 | namespace DemoCenter.ViewModels; 8 | 9 | public partial class SmithLineSeriesViewViewModel : ChartsPageViewModel 10 | { 11 | [ObservableProperty] ObservableCollection series = new() 12 | { 13 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new SmithSampleDataAdapter()}, 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Charts/SmithPointSeriesViewViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Avalonia.Media; 3 | using CommunityToolkit.Mvvm.ComponentModel; 4 | using DemoCenter.ViewModels.DataAdapters; 5 | using Eremex.AvaloniaUI.Charts; 6 | 7 | namespace DemoCenter.ViewModels; 8 | 9 | public partial class SmithPointSeriesViewViewModel : ChartsPageViewModel 10 | { 11 | [ObservableProperty] ObservableCollection series = new() 12 | { 13 | new SeriesViewModel { Color = Color.FromArgb(255, 189, 20, 54), DataAdapter = new SmithSampleDataAdapter()}, 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/CommonControls/CommonControlsGroupViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace DemoCenter.ViewModels 10 | { 11 | public partial class CommonControlsGroupViewModel : PageViewModelBase 12 | { 13 | [ObservableProperty] string message; 14 | 15 | public CommonControlsGroupViewModel() 16 | { 17 | Message = GetType().FullName; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/CommonControls/MessageBoxPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Avalonia.Layout; 3 | using Eremex.AvaloniaUI.Controls; 4 | 5 | namespace DemoCenter.ViewModels 6 | { 7 | public partial class MessageBoxPageViewModel : PageViewModelBase 8 | { 9 | [ObservableProperty] private string title = "MxMessageBox Title"; 10 | [ObservableProperty] private string text = "MxMessageBox can display a text message, an icon and a set of standard buttons."; 11 | [ObservableProperty] private MessageBoxButtons buttons = MessageBoxButtons.OkCancel; 12 | [ObservableProperty] private MessageBoxIcon icon = MessageBoxIcon.Information; 13 | [ObservableProperty] private MessageBoxResult result = MessageBoxResult.Ok; 14 | [ObservableProperty] private HorizontalAlignment buttonAlignment = HorizontalAlignment.Right; 15 | } 16 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/CommonControls/SplitContainerControlPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using Eremex.AvaloniaUI.Controls.Editors; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class SplitContainerControlPageViewModel : PageViewModelBase 13 | { 14 | [ObservableProperty] SplitContainerControlCollapsePanel collapsedPanel; 15 | 16 | public SplitContainerControlPageViewModel() 17 | { 18 | CollapsedPanel = SplitContainerControlCollapsePanel.Panel2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DataGrid/DataGridDataEditorsPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | using Eremex.AvaloniaUI.Controls.Common; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Collections.ObjectModel; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | 11 | namespace DemoCenter.ViewModels 12 | { 13 | public partial class DataGridDataEditorsViewModel : PageViewModelBase 14 | { 15 | 16 | [ObservableProperty] 17 | IList employees; 18 | 19 | public DataGridDataEditorsViewModel() 20 | { 21 | Employees = EmployeesData.GenerateEmployeeInfo(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DataGrid/DataGridDragDropPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | using DemoCenter.DemoData.CsvClasses; 4 | using System.Collections.ObjectModel; 5 | 6 | namespace DemoCenter.ViewModels 7 | { 8 | public partial class DataGridDragDropPageViewModel : PageViewModelBase 9 | { 10 | public DataGridDragDropPageViewModel() 11 | { 12 | ProductsInWarehouse = CsvSources.StockProducts.Take(50).ToList(); 13 | ProductsInStock = CsvSources.StockProducts.TakeLast(20).ToList(); 14 | } 15 | 16 | public List ProductsInStock { get; } 17 | 18 | public List ProductsInWarehouse { get; } 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DataGrid/DataGridFilteringViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | 4 | namespace DemoCenter.ViewModels 5 | { 6 | public partial class DataGridFilteringViewModel : PageViewModelBase 7 | { 8 | [ObservableProperty] 9 | IList employees; 10 | 11 | public DataGridFilteringViewModel() 12 | { 13 | Employees = EmployeesData.GenerateEmployeeInfo(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DataGrid/DataGridGroupingPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | 4 | namespace DemoCenter.ViewModels 5 | { 6 | public partial class DataGridGroupingPageViewModel : PageViewModelBase 7 | { 8 | [ObservableProperty] 9 | IList sales; 10 | 11 | public DataGridGroupingPageViewModel() 12 | { 13 | Sales = EmployeesData.GenerateEmployeeSales(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DataGrid/DataGridMultipleSelectionPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | using System.Collections.ObjectModel; 4 | 5 | namespace DemoCenter.ViewModels 6 | { 7 | public partial class DataGridMultipleSelectionPageViewModel : PageViewModelBase 8 | { 9 | public DataGridMultipleSelectionPageViewModel() 10 | { 11 | Employees = EmployeesData.GenerateEmployeeInfo(); 12 | SelectedEmployees = new(Employees.Take(5)); 13 | } 14 | 15 | public ObservableCollection SelectedEmployees { get; } 16 | 17 | public IList Employees { get; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DataGrid/DataGridPageViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace DemoCenter.ViewModels 2 | { 3 | public partial class DataGridPageViewModel : PageViewModelBase 4 | { 5 | public DataGridPageViewModel() 6 | { 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DataGrid/DataGridRowAutoHeightViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | 4 | namespace DemoCenter.ViewModels 5 | { 6 | public partial class DataGridRowAutoHeightViewModel : PageViewModelBase 7 | { 8 | [ObservableProperty] 9 | IList cars; 10 | 11 | public DataGridRowAutoHeightViewModel() 12 | { 13 | Cars = CsvSources.Cars; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DataGrid/DataGridValidationViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | 4 | namespace DemoCenter.ViewModels 5 | { 6 | public partial class DataGridValidationViewModel : PageViewModelBase 7 | { 8 | [ObservableProperty] 9 | IList employees; 10 | 11 | public DataGridValidationViewModel() 12 | { 13 | Employees = EmployeesData.GenerateValidationEmployeeInfo(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/DesktopOnlyViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace DemoCenter.ViewModels; 2 | 3 | public partial class DesktopOnlyViewModel : PageViewModelBase 4 | { 5 | } 6 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Editors/ComboBoxEditorPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | using CommunityToolkit.Mvvm.ComponentModel; 8 | using DemoCenter.DemoData; 9 | using Eremex.AvaloniaUI.Controls.Editors; 10 | 11 | namespace DemoCenter.ViewModels 12 | { 13 | public partial class ComboBoxEditorPageViewModel : PageViewModelBase 14 | { 15 | [ObservableProperty] string yachtValue = CsvSources.YachtNames[3]; 16 | [ObservableProperty] FilterCondition editableViewFilterCondition = FilterCondition.StartsWith; 17 | 18 | [ObservableProperty] List elements; 19 | [ObservableProperty] ElementInfo selectedElement; 20 | 21 | [ObservableProperty] IList mechs; 22 | [ObservableProperty] ObservableCollection selectedMechs; 23 | 24 | [ObservableProperty] string[] separators = new[] { ";", ".", "...", "|" }; 25 | [ObservableProperty] string selectedSeparator; 26 | 27 | public ComboBoxEditorPageViewModel() 28 | { 29 | Elements = ElementsSources.Elements; 30 | SelectedElement = Elements[9]; 31 | 32 | Mechs = CsvSources.Mechs; 33 | SelectedMechs = new ObservableCollection() { Mechs[1], Mechs[5], Mechs[6], Mechs[9] }; 34 | SelectedSeparator = Separators[0]; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Editors/DateEditorPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using CommunityToolkit.Mvvm.ComponentModel; 7 | using DemoCenter.DemoData; 8 | using Eremex.AvaloniaUI.Controls.Editors; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class DateEditorPageViewModel : PageViewModelBase 13 | { 14 | [ObservableProperty] bool showNullButton; 15 | [ObservableProperty] ComponentPlacement nullValueButtonPosition; 16 | 17 | [ObservableProperty] DateTime? current; 18 | [ObservableProperty] DateTime? minimum; 19 | [ObservableProperty] DateTime? maximum; 20 | 21 | [ObservableProperty] string[] formats = new[] { "d", "D", "MMMM dd" }; 22 | [ObservableProperty] string selectedTextFormat; 23 | 24 | public DateEditorPageViewModel() 25 | { 26 | 27 | ShowNullButton = true; 28 | Current = DateTime.Now.AddDays(4); 29 | Maximum = DateTime.Now.AddMonths(4); 30 | SelectedTextFormat = formats[0]; 31 | } 32 | 33 | partial void OnShowNullButtonChanged(bool value) => NullValueButtonPosition = value ? ComponentPlacement.Popup : ComponentPlacement.None; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Editors/EditorsGroupViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | using CommunityToolkit.Mvvm.ComponentModel; 8 | 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class EditorsGroupViewModel : PageViewModelBase 13 | { 14 | public EditorsGroupViewModel() 15 | { 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Editors/EditorsOverviewPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | using CommunityToolkit.Mvvm.ComponentModel; 9 | using CommunityToolkit.Mvvm.Input; 10 | using DemoCenter.DemoData; 11 | 12 | namespace DemoCenter.ViewModels 13 | { 14 | public partial class EditorsOverviewPageViewModel : PageViewModelBase 15 | { 16 | [ObservableProperty] DateTime selectedDate = DateTime.Today.AddDays(3); 17 | [ObservableProperty] GraphicView graphicView = GraphicView.Front; 18 | 19 | [ObservableProperty] ElementInfo selectedItem; 20 | [ObservableProperty] IEnumerable elements; 21 | public EditorsOverviewPageViewModel() 22 | { 23 | Elements = ElementsSources.Elements.Take(new Range(15, 25)); 24 | SelectedItem = Elements.ElementAt(3); 25 | } 26 | [RelayCommand] 27 | public void ShowPage(string parameter) 28 | { 29 | try 30 | { 31 | Process.Start(new ProcessStartInfo(parameter) { UseShellExecute = true }); 32 | } 33 | catch { }; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Editors/EnumSourcePageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using CommunityToolkit.Mvvm.ComponentModel; 7 | using DemoCenter.DemoData; 8 | using Eremex.AvaloniaUI.Controls.Common; 9 | using Eremex.AvaloniaUI.Controls.DataControl; 10 | 11 | namespace DemoCenter.ViewModels 12 | { 13 | public partial class EnumSourcePageViewModel : PageViewModelBase 14 | { 15 | [ObservableProperty] GraphicPosition graphicPosition; 16 | [ObservableProperty] GraphicView graphicView; 17 | [ObservableProperty] EnumMembersSortMode sortMode; 18 | 19 | //public event Action UpdateEnumSources; 20 | 21 | public EnumSourcePageViewModel() 22 | { 23 | SortMode = EnumMembersSortMode.Default; 24 | GraphicPosition = GraphicPosition.Maximum; 25 | GraphicView = GraphicView.Top; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Editors/HyperlinkEditorPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using CommunityToolkit.Mvvm.ComponentModel; 7 | using CommunityToolkit.Mvvm.Input; 8 | 9 | using DemoCenter.DemoData; 10 | 11 | namespace DemoCenter.ViewModels 12 | { 13 | public partial class HyperlinkEditorPageViewModel : PageViewModelBase 14 | { 15 | [ObservableProperty] IEnumerable yachts; 16 | 17 | public HyperlinkEditorPageViewModel() 18 | { 19 | Yachts = CsvSources.Yachts.Take(new Range(4, 9)); 20 | } 21 | 22 | public event Action SelectDemo; 23 | 24 | [RelayCommand] 25 | public void ShowDemo(string moduleName) 26 | { 27 | SelectDemo?.Invoke(moduleName); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Editors/SegmentedEditorPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using CommunityToolkit.Mvvm.ComponentModel; 7 | using DemoCenter.DemoData; 8 | using Eremex.AvaloniaUI.Controls.Common; 9 | using Eremex.AvaloniaUI.Controls.DataControl; 10 | 11 | namespace DemoCenter.ViewModels 12 | { 13 | public partial class SegmentedEditorPageViewModel : PageViewModelBase 14 | { 15 | [ObservableProperty] GraphicView graphicView; 16 | [ObservableProperty] string[] viewTypes; 17 | [ObservableProperty] string selectedViewType; 18 | 19 | public SegmentedEditorPageViewModel() 20 | { 21 | GraphicView = GraphicView.Top; 22 | ViewTypes = new[] { "Primary", "Secondary" }; 23 | SelectedViewType = ViewTypes[0]; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Editors/SpinEditorPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using DemoCenter.DemoData; 8 | using CommunityToolkit.Mvvm.ComponentModel; 9 | using Eremex.AvaloniaUI.Controls.Common; 10 | 11 | namespace DemoCenter.ViewModels 12 | { 13 | public partial class SpinEditorPageViewModel : PageViewModelBase 14 | { 15 | [ObservableProperty] IEnumerable yachts; 16 | public SpinEditorPageViewModel() 17 | { 18 | Yachts = CsvSources.Yachts.Take(4); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Graphics3DControl/Graphics3DControlViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace DemoCenter.ViewModels; 2 | 3 | public class Graphics3DControlViewModel : PageViewModelBase 4 | { 5 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Graphics3DControl/MeshViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Eremex.AvaloniaUI.Controls3D; 3 | 4 | namespace DemoCenter.ViewModels; 5 | 6 | public partial class MeshViewModel : ObservableObject 7 | { 8 | [ObservableProperty] string name; 9 | [ObservableProperty] string materialKey; 10 | [ObservableProperty] Vertex3D[] vertices; 11 | [ObservableProperty] uint[] indices; 12 | [ObservableProperty] MeshFillType type; 13 | [ObservableProperty] uint size; 14 | 15 | public MeshViewModel(Vertex3D[] vertices, uint[] indices) 16 | { 17 | this.vertices = vertices; 18 | this.indices = indices; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/PageViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using Eremex.AvaloniaUI.Controls.Common; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace DemoCenter.ViewModels 9 | { 10 | public abstract partial class PageViewModelBase : ViewModelBase 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/PropertyGrid/PropertyGridDataEditorsViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | using Eremex.AvaloniaUI.Controls.Common; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class PropertyGridDataEditorsViewModel : PageViewModelBase 13 | { 14 | [ObservableProperty] 15 | object selectedObject; 16 | 17 | public PropertyGridDataEditorsViewModel() 18 | { 19 | var employees = EmployeesData.GenerateEmployeeInfo(); 20 | SelectedObject = employees[new Random().Next(employees.Count)]; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/PropertyGrid/PropertyGridGroupViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace DemoCenter.ViewModels 10 | { 11 | public partial class PropertyGridGroupViewModel : PageViewModelBase 12 | { 13 | [ObservableProperty] string message; 14 | 15 | public PropertyGridGroupViewModel() 16 | { 17 | Message = GetType().FullName; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/PropertyGrid/PropertyGridTabItemsViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using DemoCenter.DemoData; 3 | using Eremex.AvaloniaUI.Controls.Common; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class PropertyGridTabItemsViewModel : PageViewModelBase 13 | { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Ribbon/RibbonGroupViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | 3 | namespace DemoCenter.ViewModels; 4 | 5 | public partial class RibbonGroupViewModel : PageViewModelBase 6 | { 7 | [ObservableProperty] string message; 8 | 9 | public RibbonGroupViewModel() 10 | { 11 | Message = GetType().FullName; 12 | } 13 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/StandardControls/PrimitivesPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using CommunityToolkit.Mvvm.ComponentModel; 3 | using Eremex.AvaloniaUI.Controls.Common; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class PrimitivesPageViewModel : PageViewModelBase 13 | { 14 | public PrimitivesPageViewModel() 15 | { 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/StandardControls/ProgressBarPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using CommunityToolkit.Mvvm.ComponentModel; 8 | using Eremex.AvaloniaUI.Controls.Common; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class ProgressBarPageViewModel : PageViewModelBase 13 | { 14 | [ObservableProperty] string [] formats = new[] { "{1:0}%", "{1:0}", "{1:N2}" } ; 15 | [ObservableProperty] string selectedTextFormat; 16 | 17 | public ProgressBarPageViewModel() 18 | { 19 | SelectedTextFormat = formats[0]; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/StandardControls/SliderPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using CommunityToolkit.Mvvm.ComponentModel; 3 | using Eremex.AvaloniaUI.Controls.Common; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class SliderPageViewModel : PageViewModelBase 13 | { 14 | [ObservableProperty] TickPlacement tickPlacement; 15 | 16 | public SliderPageViewModel() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/StandardControls/StandardControlsGroupViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace DemoCenter.ViewModels 10 | { 11 | public partial class StandardControlsGroupViewModel : PageViewModelBase 12 | { 13 | public StandardControlsGroupViewModel() 14 | { 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/StandardControls/StandardControlsOverviewPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using CommunityToolkit.Mvvm.ComponentModel; 8 | using Eremex.AvaloniaUI.Controls.Common; 9 | 10 | namespace DemoCenter.ViewModels 11 | { 12 | public partial class StandardControlsOverviewPageViewModel : PageViewModelBase 13 | { 14 | public StandardControlsOverviewPageViewModel() 15 | { 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/Tools/DeveloperToolsGroupViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace DemoCenter.ViewModels; 2 | 3 | public class DeveloperToolsGroupViewModel : PageViewModelBase 4 | { 5 | 6 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/TreeList/TreeListDataEditorsPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.DemoData; 2 | 3 | namespace DemoCenter.ViewModels 4 | { 5 | public partial class TreeListDataEditorsPageViewModel : PageViewModelBase 6 | { 7 | public TreeListDataEditorsPageViewModel() 8 | { 9 | Tasks = ProjectTasksGenerator.Generate(); 10 | } 11 | 12 | public List Tasks { get; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/TreeList/TreeListFilteringPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.DemoData; 2 | 3 | namespace DemoCenter.ViewModels 4 | { 5 | public partial class TreeListFilteringPageViewModel : PageViewModelBase 6 | { 7 | public TreeListFilteringPageViewModel() 8 | { 9 | Tasks = ProjectTasksGenerator.Generate(); 10 | } 11 | 12 | public List Tasks { get; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/TreeList/TreeListGroupViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace DemoCenter.ViewModels 10 | { 11 | public partial class TreeListGroupViewModel : PageViewModelBase 12 | { 13 | [ObservableProperty] string message; 14 | 15 | public TreeListGroupViewModel() 16 | { 17 | Message = GetType().FullName; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/ViewModels/TreeList/TreeListMultipleSelectionPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using DemoCenter.DemoData; 2 | using System.Collections.ObjectModel; 3 | 4 | namespace DemoCenter.ViewModels 5 | { 6 | public partial class TreeListMultipleSelectionPageViewModel : PageViewModelBase 7 | { 8 | public TreeListMultipleSelectionPageViewModel() 9 | { 10 | Tasks = ProjectTasksGenerator.Generate(); 11 | SelectedTasks = new(Tasks[0].Tasks.Take(5)); 12 | } 13 | 14 | public List Tasks { get; } 15 | 16 | public ObservableCollection SelectedTasks { get; } 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Bars/BarItemsPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | 4 | namespace DemoCenter.Views 5 | { 6 | public partial class BarItemsPageView : UserControl 7 | { 8 | public BarItemsPageView() 9 | { 10 | InitializeComponent(); 11 | PropertiesSelector.DataContext = ButtonItem; 12 | } 13 | 14 | private void OnRadioButtonCheckedChanged(object sender, RoutedEventArgs e) 15 | { 16 | var source = e.Source as RadioButton; 17 | 18 | if (source.IsChecked != true) 19 | return; 20 | if(source == ButtonItemSelector) 21 | PropertiesSelector.DataContext = ButtonItem; 22 | else if (source == ButtonCheckItemSelector) 23 | PropertiesSelector.DataContext = ButtonCheckItem; 24 | else if(source == ButtonDropDownItemSelector) 25 | PropertiesSelector.DataContext = ButtonDropDownItem; 26 | else if(source == TextItemSelector) 27 | PropertiesSelector.DataContext = TextItem; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Bars/BarsGroupView.axaml: -------------------------------------------------------------------------------- 1 | 20 | 21 | 22 | 23 | 24 | 28 | 29 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Bars/BarsGroupView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class BarsGroupView : UserControl 6 | { 7 | public BarsGroupView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Bars/BarsOverviewPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class BarsOverviewPageView : UserControl 6 | { 7 | public BarsOverviewPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Bars/ContextMenuPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class ContextMenuPageView : UserControl 6 | { 7 | public ContextMenuPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianAreaSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianAreaSeriesViewView : UserControl 6 | { 7 | public CartesianAreaSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianCandlestickAggregationView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianCandlestickAggregationView : UserControl 6 | { 7 | public CartesianCandlestickAggregationView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianCandlestickSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianCandlestickSeriesViewView : UserControl 6 | { 7 | public CartesianCandlestickSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianChartAxesPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Eremex.AvaloniaUI.Charts; 3 | 4 | namespace DemoCenter.Views; 5 | 6 | public partial class CartesianChartAxesPageView : UserControl 7 | { 8 | public CartesianChartAxesPageView() 9 | { 10 | InitializeComponent(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianChartLargeDataPageView.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | Large data 10 | 2 series with 1 million points each 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianChartLargeDataPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianChartLargeDataPageView : UserControl 6 | { 7 | public CartesianChartLargeDataPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianChartLogarithmicScalePageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianChartLogarithmicScalePageView : UserControl 6 | { 7 | public CartesianChartLogarithmicScalePageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianChartRealtimePageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | using DemoCenter.ViewModels; 4 | 5 | namespace DemoCenter.Views; 6 | 7 | public partial class CartesianChartRealtimePageView : UserControl 8 | { 9 | CartesianChartRealtimePageViewModel ViewModel => DataContext as CartesianChartRealtimePageViewModel; 10 | 11 | public CartesianChartRealtimePageView() 12 | { 13 | InitializeComponent(); 14 | } 15 | protected override void OnLoaded(RoutedEventArgs e) 16 | { 17 | base.OnLoaded(e); 18 | ViewModel?.Start(); 19 | } 20 | protected override void OnUnloaded(RoutedEventArgs e) 21 | { 22 | base.OnUnloaded(e); 23 | ViewModel?.Stop(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianLineSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianLineSeriesViewView : UserControl 6 | { 7 | public CartesianLineSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianPointSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianPointSeriesViewView : UserControl 6 | { 7 | public CartesianPointSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianRangeAreaSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianRangeAreaSeriesViewView : UserControl 6 | { 7 | public CartesianRangeAreaSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianScatterLineSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianScatterLineSeriesViewView : UserControl 6 | { 7 | public CartesianScatterLineSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianSideBySideBarSeriesViewView.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianSideBySideBarSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianSideBySideBarSeriesViewView : UserControl 6 | { 7 | public CartesianSideBySideBarSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianSideBySideRangeBarSeriesViewView.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianSideBySideRangeBarSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianSideBySideRangeBarSeriesViewView : UserControl 6 | { 7 | public CartesianSideBySideRangeBarSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianStepAreaSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianStepAreaSeriesViewView : UserControl 6 | { 7 | public CartesianStepAreaSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianStepLineSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class CartesianStepLineSeriesViewView : UserControl 6 | { 7 | public CartesianStepLineSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/CartesianStripsAndConstantLinesView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Input; 3 | using DemoCenter.ViewModels; 4 | 5 | namespace DemoCenter.Views; 6 | 7 | public partial class CartesianStripsAndConstantLinesView : UserControl 8 | { 9 | CartesianStripsAndConstantLinesViewModel ViewModel => DataContext as CartesianStripsAndConstantLinesViewModel; 10 | 11 | public CartesianStripsAndConstantLinesView() 12 | { 13 | InitializeComponent(); 14 | } 15 | void DemoControl_OnPointerPressed(object sender, PointerPressedEventArgs e) 16 | { 17 | var point = e.GetCurrentPoint(DemoControl); 18 | if (point.Properties.IsRightButtonPressed && ViewModel is not null) 19 | { 20 | var coords = DemoControl.ScreenPointToDiagramPoint(point.Position); 21 | if (coords.InsideViewport) 22 | { 23 | object argument = coords.AxesX.First().Value; 24 | ViewModel.ConstantLines.Add(new ConstantLineViewModel { AxisValue = argument, Title = argument.ToString() }); 25 | } 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/HeatmapColorProvidersView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class HeatmapColorProvidersView : UserControl 6 | { 7 | public HeatmapColorProvidersView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/HeatmapRealTimeView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | using DemoCenter.ViewModels; 4 | 5 | namespace DemoCenter.Views; 6 | 7 | public partial class HeatmapRealTimeView : UserControl 8 | { 9 | HeatmapRealTimeViewModel ViewModel => DataContext as HeatmapRealTimeViewModel; 10 | 11 | 12 | public HeatmapRealTimeView() 13 | { 14 | InitializeComponent(); 15 | } 16 | protected override void OnLoaded(RoutedEventArgs e) 17 | { 18 | base.OnLoaded(e); 19 | ViewModel?.Start(); 20 | } 21 | protected override void OnUnloaded(RoutedEventArgs e) 22 | { 23 | base.OnUnloaded(e); 24 | ViewModel?.Stop(); 25 | } 26 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/PolarAreaSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class PolarAreaSeriesViewView : UserControl 6 | { 7 | public PolarAreaSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/PolarLineSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class PolarLineSeriesViewView : UserControl 6 | { 7 | public PolarLineSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/PolarPointSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class PolarPointSeriesViewView : UserControl 6 | { 7 | public PolarPointSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/PolarRangeAreaSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class PolarRangeAreaSeriesViewView : UserControl 6 | { 7 | public PolarRangeAreaSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/PolarScatterLineSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class PolarScatterLineSeriesViewView : UserControl 6 | { 7 | public PolarScatterLineSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/PolarStripsAndConstantLinesView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Input; 3 | using DemoCenter.ViewModels; 4 | 5 | namespace DemoCenter.Views; 6 | 7 | public partial class PolarStripsAndConstantLinesView : UserControl 8 | { 9 | PolarStripsAndConstantLinesViewModel ViewModel => DataContext as PolarStripsAndConstantLinesViewModel; 10 | 11 | public PolarStripsAndConstantLinesView() 12 | { 13 | InitializeComponent(); 14 | } 15 | void DemoControl_OnPointerPressed(object sender, PointerPressedEventArgs e) 16 | { 17 | if(ViewModel is null) 18 | return; 19 | 20 | var point = e.GetCurrentPoint(DemoControl); 21 | var coords = DemoControl.ScreenPointToDiagramPoint(point.Position); 22 | if (coords.InsideViewport && coords.Argument.HasValue && coords.Value is not null) 23 | { 24 | if (point.Properties.IsLeftButtonPressed) 25 | ViewModel.ConstantLinesX.Add(new ConstantLineViewModel { AxisValue = coords.Argument, Title = coords.Argument.ToString() }); 26 | if (point.Properties.IsRightButtonPressed) 27 | ViewModel.ConstantLinesY.Add(new ConstantLineViewModel { AxisValue = coords.Value, Title = coords.Value.ToString() }); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/SmithLineSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class SmithPointSeriesViewView : UserControl 6 | { 7 | public SmithPointSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Charts/SmithPointSeriesViewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class SmithLineSeriesViewView : UserControl 6 | { 7 | public SmithLineSeriesViewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/CommonControls/CommonControlsGroupView.axaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/CommonControls/CommonControlsGroupView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class CommonControlsGroupView : UserControl 6 | { 7 | public CommonControlsGroupView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/CommonControls/MessageBoxPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | using Avalonia.Platform; 4 | using DemoCenter.ViewModels; 5 | using Eremex.AvaloniaUI.Controls; 6 | 7 | namespace DemoCenter.Views 8 | { 9 | public partial class MessageBoxPageView : UserControl 10 | { 11 | public MessageBoxPageView() 12 | { 13 | InitializeComponent(); 14 | } 15 | 16 | private void Button_OnClick(object sender, RoutedEventArgs e) 17 | { 18 | var viewModel = (MessageBoxPageViewModel)DataContext; 19 | var res = MxMessageBox.Show(null, viewModel.Text, viewModel.Title, viewModel.Buttons, viewModel.Icon, viewModel.Result, 20 | configure: msgBox => 21 | { 22 | msgBox.ButtonAlignment = viewModel.ButtonAlignment; 23 | }); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/CommonControls/SplitContainerControlPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class SplitContainerControlPageView : UserControl 6 | { 7 | public SplitContainerControlPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/CommonControls/TabControlPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class TabControlPageView : UserControl 6 | { 7 | public TabControlPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridDataEditorsView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class DataGridDataEditorsView : UserControl 6 | { 7 | public DataGridDataEditorsView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridDragDropPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Data.Converters; 3 | using Avalonia.Media; 4 | using DemoCenter.DemoData.CsvClasses; 5 | using Eremex.AvaloniaUI.Controls.DataControl; 6 | using Eremex.AvaloniaUI.Controls.DataGrid; 7 | using System.Globalization; 8 | 9 | namespace DemoCenter.Views 10 | { 11 | public partial class DataGridDragDropPageView : UserControl 12 | { 13 | public DataGridDragDropPageView() 14 | { 15 | InitializeComponent(); 16 | } 17 | } 18 | 19 | public class SmallQuantityToVisibilityConverter : IValueConverter 20 | { 21 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 22 | { 23 | if (value != null && (int)value < 15) 24 | return true; 25 | return false; 26 | } 27 | 28 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 29 | { 30 | throw new NotImplementedException(); 31 | } 32 | } 33 | 34 | public class SmallQuantityToColorConverter : IMultiValueConverter 35 | { 36 | public object Convert(IList values, Type targetType, object parameter, CultureInfo culture) 37 | { 38 | if (values.Count != 3) 39 | return Brushes.Transparent; 40 | 41 | if (values[0] is int quantity && quantity < 15 && values[2] is SolidColorBrush brush) 42 | { 43 | return new SolidColorBrush(brush.Color, 0.3); 44 | } 45 | return values[1]; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridFilteringView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Eremex.AvaloniaUI.Controls.DataGrid; 3 | 4 | namespace DemoCenter.Views 5 | { 6 | public partial class DataGridFilteringView : UserControl 7 | { 8 | public DataGridFilteringView() 9 | { 10 | InitializeComponent(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridGroupingPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Media; 3 | 4 | namespace DemoCenter.Views 5 | { 6 | public partial class DataGridGroupingPageView : UserControl 7 | { 8 | public DataGridGroupingPageView() 9 | { 10 | InitializeComponent(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridMultipleSelectionPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Eremex.AvaloniaUI.Controls.DataGrid; 3 | 4 | namespace DemoCenter.Views 5 | { 6 | public partial class DataGridMultipleSelectionPageView : UserControl 7 | { 8 | public DataGridMultipleSelectionPageView() 9 | { 10 | InitializeComponent(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridPageView.axaml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class DataGridPageView : UserControl 6 | { 7 | public DataGridPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridRowAutoHeightView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class DataGridRowAutoHeightView : UserControl 6 | { 7 | public DataGridRowAutoHeightView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DataGrid/DataGridValidationView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using DemoCenter.DemoData; 3 | using Eremex.AvaloniaUI.Controls.DataGrid; 4 | using Eremex.AvaloniaUI.Controls.Editors; 5 | 6 | namespace DemoCenter.Views 7 | { 8 | public partial class DataGridValidationView : UserControl 9 | { 10 | public DataGridValidationView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void OnValidateCellValue(object sender, DataGridValidateCellValueEventArgs e) 16 | { 17 | if(e.Column.FieldName == nameof(EmployeeValidationInfo.HireDate) && chkValidateHireDate.IsChecked == true) 18 | { 19 | var birthDate = (DateTime)dataGrid.GetCellValue(e.RowIndex, birthDateColumn); 20 | if ((DateTime)e.Value < birthDate) 21 | e.ErrorContent = "Hire Date cannot be less than Birth Date"; 22 | } 23 | else if(e.Column.FieldName == nameof(EmployeeValidationInfo.Experience) && chkValidateExperience.IsChecked == true) 24 | { 25 | if ((int)e.Value < 1) 26 | e.ErrorContent = "Experience cannot be less than one year"; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/DesktopOnlyView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class DesktopOnlyView : UserControl 6 | { 7 | public DesktopOnlyView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/ColorEditorPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class ColorEditorPageView : UserControl 6 | { 7 | public ColorEditorPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/ComboBoxEditorPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class ComboBoxEditorPageView : UserControl 6 | { 7 | public ComboBoxEditorPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/DateEditorPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | 4 | using Avalonia.Controls; 5 | 6 | namespace DemoCenter.Views 7 | { 8 | public partial class DateEditorPageView : UserControl 9 | { 10 | public DateEditorPageView() 11 | { 12 | InitializeComponent(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/EditorsGroupView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class EditorsGroupView : UserControl 6 | { 7 | public EditorsGroupView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/EditorsOverviewPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class EditorsOverviewPageView : UserControl 6 | { 7 | public EditorsOverviewPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/EnumSourcePageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Data; 3 | using Avalonia.Data.Converters; 4 | using Avalonia.Markup.Xaml; 5 | using DemoCenter.DemoData; 6 | using DemoCenter.ViewModels; 7 | using Eremex.AvaloniaUI.Controls.Common; 8 | using System; 9 | using System.Collections; 10 | using System.Collections.Generic; 11 | using System.Linq; 12 | 13 | namespace DemoCenter.Views 14 | { 15 | public partial class EnumSourcePageView : UserControl 16 | { 17 | public EnumSourcePageView() 18 | { 19 | InitializeComponent(); 20 | } 21 | } 22 | 23 | public class EnumDescriptionConverter : MarkupExtension, IValueConverter 24 | { 25 | public override object ProvideValue(IServiceProvider serviceProvider) 26 | { 27 | return this; 28 | } 29 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 30 | { 31 | var type = value?.GetType(); 32 | var text = value?.ToString(); 33 | if (type == null || !type.IsEnum || string.IsNullOrEmpty(text)) 34 | return null; 35 | return $"{type.Name}_{text}"; 36 | } 37 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 38 | { 39 | return null; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/HyperlinkEditorPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.VisualTree; 3 | using DemoCenter.ViewModels; 4 | 5 | namespace DemoCenter.Views 6 | { 7 | public partial class HyperlinkEditorPageView : UserControl 8 | { 9 | 10 | HyperlinkEditorPageViewModel ViewModel { get; set; } 11 | public HyperlinkEditorPageView() 12 | { 13 | InitializeComponent(); 14 | } 15 | 16 | protected override void OnDataContextChanged(EventArgs e) 17 | { 18 | base.OnDataContextChanged(e); 19 | UnsubscribeEvents(ViewModel); 20 | ViewModel = DataContext as HyperlinkEditorPageViewModel; 21 | SubscribeEvents(ViewModel); 22 | } 23 | 24 | private void SubscribeEvents(HyperlinkEditorPageViewModel viewModel) 25 | { 26 | if (viewModel == null) 27 | return; 28 | viewModel.SelectDemo += OnViewModelSelectDemo; 29 | } 30 | 31 | private void UnsubscribeEvents(HyperlinkEditorPageViewModel viewModel) 32 | { 33 | if (viewModel == null) 34 | return; 35 | viewModel.SelectDemo -= OnViewModelSelectDemo; 36 | } 37 | 38 | private void OnViewModelSelectDemo(string moduleName) 39 | { 40 | if(this.GetVisualAncestors().FirstOrDefault(x => x is MainView) is MainView view) 41 | (view.DataContext as MainViewModel)?.SelectProduct(moduleName); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/MemoEditorPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using Eremex.AvaloniaUI.Controls.Editors; 5 | 6 | namespace DemoCenter.Views; 7 | 8 | public partial class MemoEditorPageView : UserControl 9 | { 10 | public MemoEditorPageView() 11 | { 12 | InitializeComponent(); 13 | } 14 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/SpinEditorPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class SpinEditorPageView : UserControl 6 | { 7 | public SpinEditorPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Editors/TextEditingPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System.Globalization; 2 | 3 | using Avalonia.Controls; 4 | using Avalonia.Data.Converters; 5 | using Avalonia.Markup.Xaml; 6 | using Eremex.AvaloniaUI.Icons; 7 | 8 | namespace DemoCenter.Views 9 | { 10 | public partial class TextEditingPageView : UserControl 11 | { 12 | public TextEditingPageView() 13 | { 14 | InitializeComponent(); 15 | } 16 | } 17 | 18 | public class LockButtonImageConverter : MarkupExtension, IValueConverter 19 | { 20 | public override object ProvideValue(IServiceProvider serviceProvider) 21 | { 22 | return this; 23 | } 24 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | if (value == null) 27 | return null; 28 | return (bool)value ? Basic.Lock_True : Basic.Lock_False; 29 | } 30 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 31 | { 32 | throw new NotImplementedException(); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlCameraView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class Graphics3DControlCameraView : UserControl 6 | { 7 | public Graphics3DControlCameraView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlLinesView.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlLinesView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class Graphics3DControlLinesView : UserControl 6 | { 7 | public Graphics3DControlLinesView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlOverviewView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class Graphics3DControlOverviewView : UserControl 6 | { 7 | public Graphics3DControlOverviewView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlPointsView.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlPointsView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class Graphics3DControlPointsView : UserControl 6 | { 7 | public Graphics3DControlPointsView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlSimpleMaterialsView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System.Globalization; 2 | using System.Numerics; 3 | using Avalonia.Controls; 4 | using Avalonia.Data.Converters; 5 | using Avalonia.Media; 6 | 7 | namespace DemoCenter.Views; 8 | 9 | public partial class Graphics3DControlSimpleMaterialsView : UserControl 10 | { 11 | public Graphics3DControlSimpleMaterialsView() 12 | { 13 | InitializeComponent(); 14 | } 15 | } 16 | 17 | public class Vector3ToColorConverter : IValueConverter 18 | { 19 | static byte ToByte(float value) => (byte)(value * byte.MaxValue); 20 | static float ToFloat(byte value) => (float)value / byte.MaxValue; 21 | 22 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 23 | { 24 | if (value is Vector3 vector) 25 | return new Color(byte.MaxValue, ToByte(vector.X), ToByte(vector.Y), ToByte(vector.Z)); 26 | return null; 27 | } 28 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 29 | { 30 | if (value is Color color) 31 | return new Vector3(ToFloat(color.R), ToFloat(color.G), ToFloat(color.B)); 32 | return null; 33 | } 34 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlStlView.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlStlView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class Graphics3DControlStlView : UserControl 6 | { 7 | public Graphics3DControlStlView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlTexturedMaterialsView.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlTexturedMaterialsView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views; 4 | 5 | public partial class Graphics3DControlTexturedMaterialsView : UserControl 6 | { 7 | public Graphics3DControlTexturedMaterialsView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlTransformationView.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Graphics3DControl/Graphics3DControlTransformationView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | using DemoCenter.ViewModels; 4 | 5 | namespace DemoCenter.Views; 6 | 7 | public partial class Graphics3DControlTransformationView : UserControl 8 | { 9 | private Graphics3DControlTransformationViewModel ViewModel => DataContext as Graphics3DControlTransformationViewModel; 10 | 11 | public Graphics3DControlTransformationView() 12 | { 13 | InitializeComponent(); 14 | } 15 | protected override void OnLoaded(RoutedEventArgs e) 16 | { 17 | base.OnLoaded(e); 18 | ViewModel?.Start(); 19 | } 20 | protected override void OnUnloaded(RoutedEventArgs e) 21 | { 22 | base.OnUnloaded(e); 23 | ViewModel?.Stop(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/MainWindow.axaml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/MainWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Eremex.AvaloniaUI.Controls.Common; 3 | 4 | namespace DemoCenter.Views; 5 | 6 | public partial class MainWindow : MxWindow 7 | { 8 | public MainWindow() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/PropertyGrid/PropertyGridDataEditorsView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class PropertyGridDataEditorsView : UserControl 6 | { 7 | public PropertyGridDataEditorsView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/PropertyGrid/PropertyGridGroupView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class PropertyGridGroupView : UserControl 6 | { 7 | public PropertyGridGroupView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/PropertyGrid/PropertyGridTabItemsView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using DemoCenter.Views.PropertyGrid.Utils; 3 | 4 | namespace DemoCenter.Views 5 | { 6 | public partial class PropertyGridTabItemsView : UserControl 7 | { 8 | public PropertyGridTabItemsView() 9 | { 10 | InitializeComponent(); 11 | 12 | DataContext = new ContentControlPropertiesWrapper(contentControl); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Ribbon/FontStyleGalleryItemForegroundConverter.cs: -------------------------------------------------------------------------------- 1 | using System.Globalization; 2 | using Avalonia; 3 | using Avalonia.Data.Converters; 4 | using Avalonia.Markup.Xaml; 5 | using Avalonia.Media; 6 | 7 | namespace DemoCenter.Views; 8 | 9 | public class FontStyleGalleryItemForegroundConverter : MarkupExtension, IValueConverter 10 | { 11 | public override object ProvideValue(IServiceProvider serviceProvider) 12 | { 13 | return this; 14 | } 15 | 16 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 17 | { 18 | if (value is IBrush b) 19 | { 20 | return b; 21 | } 22 | 23 | return AvaloniaProperty.UnsetValue; 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Ribbon/WordPadExampleView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using DemoCenter.ViewModels; 3 | 4 | namespace DemoCenter.Views; 5 | 6 | public partial class WordPadExampleView : UserControl 7 | { 8 | public WordPadExampleView() 9 | { 10 | InitializeComponent(); 11 | DataContext = new WordPadExampleViewModel(); 12 | } 13 | } -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/StandardControls/PrimitivesPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class PrimitivesPageView : UserControl 6 | { 7 | public PrimitivesPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/StandardControls/ProgressBarPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class ProgressBarPageView : UserControl 6 | { 7 | public ProgressBarPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/StandardControls/SliderPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class SliderPageView : UserControl 6 | { 7 | public SliderPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/StandardControls/StandardControlsGroupView.axaml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/StandardControls/StandardControlsGroupView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class StandardControlsGroupView : UserControl 6 | { 7 | public StandardControlsGroupView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/StandardControls/StandardControlsOverviewPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class StandardControlsOverviewPageView : UserControl 6 | { 7 | public StandardControlsOverviewPageView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Tools/Templates/svgCodeExample.cs: -------------------------------------------------------------------------------- 1 | using Eremex.AvaloniaUI.Icons; 2 | 3 | namespace DemoCenter.Views.Tools.Templates 4 | { 5 | public class SvgCodeExample 6 | { 7 | public IImage UseIconFromCode() 8 | { 9 | return @@NAME@@; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/Tools/Templates/svgXamlExample.axaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/TreeList/TreeListDataEditorsPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using DemoCenter.DemoData; 3 | using Eremex.AvaloniaUI.Controls.TreeList; 4 | 5 | namespace DemoCenter.Views 6 | { 7 | public partial class TreeListDataEditorsPageView : UserControl 8 | { 9 | public TreeListDataEditorsPageView() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void OnShowingEditor(object sender, TreeListShowingEditorEventArgs e) 15 | { 16 | if ((e.Column.FieldName == nameof(ProjectTask.Status) || e.Column.FieldName == nameof(ProjectTask.EstimateTime)) && e.Node.Content is ProjectTask task && task.HasTasks) 17 | e.Cancel = true; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/TreeList/TreeListFilteringPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Data.Converters; 3 | using Avalonia.Interactivity; 4 | using Avalonia.Media; 5 | using DemoCenter.DemoData; 6 | using DemoCenter.ViewModels; 7 | using Eremex.AvaloniaUI.Controls.TreeList; 8 | using System.Collections; 9 | using System.Globalization; 10 | 11 | namespace DemoCenter.Views 12 | { 13 | public partial class TreeListFilteringPageView : UserControl 14 | { 15 | public TreeListFilteringPageView() 16 | { 17 | InitializeComponent(); 18 | } 19 | } 20 | 21 | public class ProjectTaskImageSelector : ITreeListNodeImageSelector 22 | { 23 | public IImage ProjectImage { get; set; } 24 | public IImage TaskImage { get; set; } 25 | 26 | public IImage SelectImage(TreeListNode node) 27 | { 28 | if(node.Content is ProjectTask task && task.HasTasks) 29 | return ProjectImage; 30 | return TaskImage; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/TreeList/TreeListGroupView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace DemoCenter.Views 4 | { 5 | public partial class TreeListGroupView : UserControl 6 | { 7 | public TreeListGroupView() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/Views/TreeList/TreeListMultipleSelectionPageView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | using DemoCenter.DemoData; 4 | using Eremex.AvaloniaUI.Controls.TreeList; 5 | 6 | namespace DemoCenter.Views 7 | { 8 | public partial class TreeListMultipleSelectionPageView : UserControl 9 | { 10 | public TreeListMultipleSelectionPageView() 11 | { 12 | InitializeComponent(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /DemoCenter/DemoCenter/emxLicense.cs: -------------------------------------------------------------------------------- 1 | // This file is auto-generated. Please do not change it. 2 | using System.Runtime.CompilerServices; 3 | 4 | using Eremex.AvaloniaUI.Controls.License; 5 | 6 | namespace DemoCenter; 7 | public class LicenseProvider 8 | { 9 | #pragma warning disable CA2255 // The 'ModuleInitializer' attribute should not be used in libraries 10 | [ModuleInitializer] 11 | #pragma warning restore CA2255 // The 'ModuleInitializer' attribute should not be used in libraries 12 | public static void RegisterLicense() 13 | { 14 | ControlsLicenseManager.SetRuntimeLicenseOwner(new LicenseProvider(),"", "8E 67 A7 90 3B 14 90 3A BD 68 7E 93 31 9E E4 07 6A 78 D1 D7 DB D7 2B A8 94 F0 A1 49 D5 39 A5 E1 38 79 C1 E4 CB B1 C4 7E"); 15 | } 16 | } -------------------------------------------------------------------------------- /Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | Eremex 4 | ©2010-2024 Eremex 5 | Eremex Controls 6 | 7 | 8 | 9 | net8.0 10 | enable 11 | true 12 | false 13 | false 14 | 15 | 16 | 17 | true 18 | 10.0 19 | false 20 | false 21 | 11.2.5 22 | 11.2.0.2 23 | 4.3.0 24 | 1.1.142 25 | $(EMXControlsVersion) 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | NU1803; 34 | 35 | 36 | -------------------------------------------------------------------------------- /License.md: -------------------------------------------------------------------------------- 1 | EMXControls license is listed at https://eremexcontrols.net/articles/licensing/eula.html 2 | 3 | This Demo project source code is licensed under the MIT License 4 | 5 | EREMEX JSC 6 | Copyright (c) 2008-2024 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. -------------------------------------------------------------------------------- /Tests/DemoCenter.Desktop.UI.Tests/AvaloniaApp.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Controls.ApplicationLifetimes; 4 | using Avalonia.Headless; 5 | using Avalonia.Threading; 6 | 7 | using DemoCenter.Desktop.UI.Tests; 8 | 9 | namespace DemoCenter.Desktop.UI.Tests 10 | { 11 | public static class AvaloniaApp 12 | { 13 | public static void Stop() 14 | { 15 | var app = GetApp(); 16 | if (app is IDisposable disposable) 17 | { 18 | Dispatcher.UIThread.Post(disposable.Dispose); 19 | } 20 | 21 | if (app != null) 22 | Dispatcher.UIThread.Post(() => app.Shutdown()); 23 | } 24 | 25 | public static Window? GetMainWindow() => GetApp()?.MainWindow; 26 | 27 | public static IClassicDesktopStyleApplicationLifetime? GetApp() => 28 | (IClassicDesktopStyleApplicationLifetime?)Application.Current?.ApplicationLifetime; 29 | 30 | public static AppBuilder BuildAvaloniaApp() => 31 | AppBuilder 32 | .Configure() 33 | .UsePlatformDetect() 34 | .WithInterFont(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Tests/DemoCenter.Desktop.UI.Tests/DemoCenter.Desktop.UI.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0 4 | enable 5 | True 6 | false 7 | Eremex.Avalonia.Controls.UITests 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Tests/DemoCenter.Desktop.UI.Tests/ModulesShowTests.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Threading; 2 | using DemoCenter.ViewModels; 3 | using DemoCenter.Views; 4 | 5 | namespace DemoCenter.Desktop.UI.Tests; 6 | public class WindowsTests 7 | { 8 | protected async Task WaitEx(int ms) 9 | { 10 | Dispatcher.UIThread.RunJobs(); 11 | await Task.Delay(ms); 12 | } 13 | 14 | [Fact] 15 | public async Task ShowDemoWindow() 16 | { 17 | var window = new MainWindow 18 | { 19 | DataContext = new MainViewModel() 20 | }; 21 | window.Show(); 22 | window.WindowState = Avalonia.Controls.WindowState.Maximized; 23 | await WaitEx(1000); 24 | window.Close(); 25 | } 26 | [Fact] 27 | public async Task ShowAllModules() 28 | { 29 | MainViewModel mainViewModel = new MainViewModel(); 30 | var window = new MainWindow 31 | { 32 | 33 | DataContext = mainViewModel 34 | }; 35 | window.Show(); 36 | window.WindowState = Avalonia.Controls.WindowState.Maximized; 37 | await WaitEx(100); 38 | 39 | foreach (var product in mainViewModel.FlatProducts) 40 | { 41 | try 42 | { 43 | mainViewModel.SelectProduct(product.Name); 44 | await WaitEx(100); 45 | } 46 | catch (Exception ex) 47 | { 48 | Assert.Fail(string.Format("problem in {0} {1}", product.Name, ex)); 49 | } 50 | } 51 | 52 | window.Close(); 53 | } 54 | } -------------------------------------------------------------------------------- /Tests/DemoCenter.Desktop.UI.Tests/emxLicense.cs: -------------------------------------------------------------------------------- 1 | // This file is auto-generated. Please do not change it. 2 | using System.Runtime.CompilerServices; 3 | 4 | using Eremex.AvaloniaUI.Controls.License; 5 | 6 | namespace DemoCenter.Desktop.UI.Tests; 7 | public class LicenseProvider 8 | { 9 | #pragma warning disable CA2255 // The 'ModuleInitializer' attribute should not be used in libraries 10 | [ModuleInitializer] 11 | #pragma warning restore CA2255 // The 'ModuleInitializer' attribute should not be used in libraries 12 | public static void RegisterLicense() 13 | { 14 | ControlsLicenseManager.SetRuntimeLicenseOwner(new LicenseProvider(),"АО ЭРЕМЕКС ", "F5 1F 12 8C 3B 9F 55 5C 6D F4 4A CC 2F F2 25 4E 65 54 8E 74 40 AB 7D C8 FC 1C 92 0E AE FF 45 4A 52 76 B1 B6 A0 22 96 8D"); 15 | } 16 | } -------------------------------------------------------------------------------- /Tests/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | $(MSBuildThisFileDirectory)Eremex.ruleset 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | runtime; build; native; contentfiles; analyzers; buildtransitive 18 | all 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/docking.md: -------------------------------------------------------------------------------- 1 | # Docking UI 2 | 3 | The **Dock Manager** component shipped as part of the Eremex Avalonia Controls library allows you to implement the classic docking UI found in popular IDEs. You can create tool panels that support dock, auto-hide, and float operations. Special Document containers are designed to display the main content of your window. You can create multiple Documents and combine them in a tabbed UI. 4 | 5 |  6 | 7 | The main features of the Docking library include: 8 | 9 | - Visual Studio IDE-inspired UI. 10 | - Dockable tool panels. 11 | - Floating panels. 12 | - Panel auto-hide functionality. 13 | - Panel drag-and-drop and resize operations. 14 | - Docking Hints — When you drag a panel over the Dock Manager's area, dock hints appear. They guide you how to dock the panel at a specific position. 15 | - Integrated support for Documents, which are special containers used to display the main content of your window. 16 | - Combining multiple Documents in a tabbed UI. 17 | - Built-in context commands to perform operations on panels and Documents. 18 | - MVVM support. 19 | 20 | ## Documentation 21 | 22 | - [English Documentation](https://eremexcontrols.net/articles/controls/docking.html) 23 | -------------------------------------------------------------------------------- /docs/graphics3dcontrol.md: -------------------------------------------------------------------------------- 1 | # Graphics3DControl 2 | 3 | `Graphics3DControl` allows you to display an interactive 3D model (or multiple models) on a window in your Avalonia application. A user can rotate, pan and zoom the model using the mouse and keyboard. 4 | 5 |  6 | 7 | Use dedicated classes to define a 3D model for the `Graphics3DControl`. These classes allow you to specify vertices, materials (in PBR format), camera, model transformations, etc. 8 | 9 | The control's main features include: 10 | 11 | - API to specify 3D models 12 | - Simple materials 13 | - Textured materials in PBR format 14 | - Displaying multiple 3D models simultaneously 15 | - Perspective and isometric camera modes 16 | - Model rotation, panning and zooming with the mouse and keyboard at runtime 17 | - Rendering on a video card with the Vulkan SDK 18 | - MVVM pattern support for specifying 3D models 19 | 20 | -------------------------------------------------------------------------------- /docs/heatmap.md: -------------------------------------------------------------------------------- 1 | # Heatmap 2 | 3 | The **Heatmap** control visualizes numeric data in a matrix using color. Heatmaps are useful for visual analysis of large datasets and locating correlations and anomalies across two variables displayed along the horizontal and vertical axes. 4 | The color of each data point in a heatmap is determined by the point's numeric value. 5 | 6 | 7 |  8 | 9 |  10 | 11 | The **Heatmap** control's features include: 12 | 13 | - Custom color encoding 14 | - Grayscale colorization 15 | - Customization of the X and Y axes 16 | - Crosshair 17 | - Strips and constant lines 18 | - Scroll and zoom with the mouse 19 | - Export the result of the data colorization to a bitmap 20 | 21 | 22 | ## Documentation 23 | 24 | - [English Documentation](https://eremexcontrols.net/articles/controls/charts/heatmap.html) 25 | -------------------------------------------------------------------------------- /docs/images/cartesianchart1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/cartesianchart1.png -------------------------------------------------------------------------------- /docs/images/controls-dark-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-dark-sm.png -------------------------------------------------------------------------------- /docs/images/controls-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-dark.png -------------------------------------------------------------------------------- /docs/images/controls-dark.snag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-dark.snag -------------------------------------------------------------------------------- /docs/images/controls-gallery/bars-darktheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/bars-darktheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/bars-darktheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/bars-darktheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/bars-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/bars-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/bars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/bars.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/chart-axes-lighttheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/chart-axes-lighttheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/chart-axes-lighttheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/chart-axes-lighttheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/charts-logarithmic-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/charts-logarithmic-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/charts-logarithmic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/charts-logarithmic.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/charts-realtimedata-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/charts-realtimedata-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/charts-realtimedata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/charts-realtimedata.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/datagrid-editorsmodule-darktheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/datagrid-editorsmodule-darktheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/datagrid-editorsmodule-darktheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/datagrid-editorsmodule-darktheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/datagrid-editorsmodule-grouping-lighttheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/datagrid-editorsmodule-grouping-lighttheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/datagrid-editorsmodule-grouping-lighttheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/datagrid-editorsmodule-grouping-lighttheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/datagrid-grouping-lighttheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/datagrid-grouping-lighttheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/datagrid-grouping-lighttheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/datagrid-grouping-lighttheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/docking-darktheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/docking-darktheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/docking-darktheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/docking-darktheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/docking-lighttheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/docking-lighttheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/docking-lighttheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/docking-lighttheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/editors-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/editors-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/editors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/editors.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/propertyGrid-inplaceeditor-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/propertyGrid-inplaceeditor-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/propertyGrid-inplaceeditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/propertyGrid-inplaceeditor.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/propertyGrid-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/propertyGrid-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/propertyGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/propertyGrid.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/treelist-lighttheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/treelist-lighttheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/treelist-lighttheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/treelist-lighttheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/treelist-search-darktheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/treelist-search-darktheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/treelist-search-darktheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/treelist-search-darktheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/treelist-search-lighttheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/treelist-search-lighttheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/treelist-search-lighttheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/treelist-search-lighttheme.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/utilitycontrols-darktheme-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/utilitycontrols-darktheme-sm.png -------------------------------------------------------------------------------- /docs/images/controls-gallery/utilitycontrols-darktheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-gallery/utilitycontrols-darktheme.png -------------------------------------------------------------------------------- /docs/images/controls-light-sm-v1.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-light-sm-v1.1.png -------------------------------------------------------------------------------- /docs/images/controls-light-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-light-sm.png -------------------------------------------------------------------------------- /docs/images/controls-light-v1.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-light-v1.1.png -------------------------------------------------------------------------------- /docs/images/controls-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-light.png -------------------------------------------------------------------------------- /docs/images/controls-light.snag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/controls-light.snag -------------------------------------------------------------------------------- /docs/images/data-editors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/data-editors.png -------------------------------------------------------------------------------- /docs/images/data-grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/data-grid.png -------------------------------------------------------------------------------- /docs/images/docking-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/docking-ui.png -------------------------------------------------------------------------------- /docs/images/graphics3dcontrol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/graphics3dcontrol.png -------------------------------------------------------------------------------- /docs/images/heatmap-grayscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/heatmap-grayscale.png -------------------------------------------------------------------------------- /docs/images/heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/heatmap.png -------------------------------------------------------------------------------- /docs/images/os-logo-RED_OS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/os-logo-RED_OS.png -------------------------------------------------------------------------------- /docs/images/polarchart1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/polarchart1.png -------------------------------------------------------------------------------- /docs/images/propertygrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/propertygrid.png -------------------------------------------------------------------------------- /docs/images/ribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/ribbon.png -------------------------------------------------------------------------------- /docs/images/smithchart1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/smithchart1.png -------------------------------------------------------------------------------- /docs/images/thumb-bars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-bars.png -------------------------------------------------------------------------------- /docs/images/thumb-chartcontrol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-chartcontrol.png -------------------------------------------------------------------------------- /docs/images/thumb-darktheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-darktheme.png -------------------------------------------------------------------------------- /docs/images/thumb-darktheme2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-darktheme2.png -------------------------------------------------------------------------------- /docs/images/thumb-datagrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-datagrid.png -------------------------------------------------------------------------------- /docs/images/thumb-docking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-docking.png -------------------------------------------------------------------------------- /docs/images/thumb-editors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-editors.png -------------------------------------------------------------------------------- /docs/images/thumb-graphics3dcontrol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-graphics3dcontrol.png -------------------------------------------------------------------------------- /docs/images/thumb-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-heatmap.png -------------------------------------------------------------------------------- /docs/images/thumb-lighttheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-lighttheme.png -------------------------------------------------------------------------------- /docs/images/thumb-lighttheme2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-lighttheme2.png -------------------------------------------------------------------------------- /docs/images/thumb-propertygrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-propertygrid.png -------------------------------------------------------------------------------- /docs/images/thumb-ribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-ribbon.png -------------------------------------------------------------------------------- /docs/images/thumb-treelist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-treelist.png -------------------------------------------------------------------------------- /docs/images/thumb-utilitycontrols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/thumb-utilitycontrols.png -------------------------------------------------------------------------------- /docs/images/toolbars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/toolbars.png -------------------------------------------------------------------------------- /docs/images/treelist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/treelist.png -------------------------------------------------------------------------------- /docs/images/treeview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/treeview.png -------------------------------------------------------------------------------- /docs/images/utility-controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Eremex/controls-demo/e6f1b389f5f6ab913f97a22b6015997229dc8978/docs/images/utility-controls.png -------------------------------------------------------------------------------- /docs/propertygrid.md: -------------------------------------------------------------------------------- 1 | # Property Grid 2 | 3 | The `PropertyGridControl` allows a user to browse properties of a single or multiple objects. The control displays public properties and their values of a bound object(s) as a vertical list, and allows a user to edit the property values. 4 | 5 |  6 | 7 | The control's main features include: 8 | 9 | - Automatic Creation of Rows — The control can use information provided by the bound object(s) to automatically generate rows. 10 | - Manual Row Creation — You can manually create rows for a specific set of object properties. 11 | - Data Edit Operations — The control uses default Eremex editors to present and edit cell values of common data types. You can embed custom editors in cells to render and edit cell values in a specific manner. 12 | - Data Annotation Attribute Support — The PropertyGrid takes into account dedicated Data Annotation attributes applied to the bound object's properties. You can use Data Annotation attributes to specify custom visibility, read-only state, display name, category and type converter for auto-generated rows. 13 | - Category Rows — Allow you to combine rows into expandable groups. 14 | - Tab Rows — Allow you to combine rows into a tabbed UI. 15 | - Search Panel — Helps a user quickly locate rows by names 16 | 17 | ## Documentation 18 | 19 | - [English Documentation](https://eremexcontrols.net/articles/controls/propertygrid.html) 20 | -------------------------------------------------------------------------------- /docs/ribbon.md: -------------------------------------------------------------------------------- 1 | # Ribbon 2 | 3 | The **RibbonControl** control allows you to create a ribbon UI inspired by Microsoft Office products. The control supports two views - Classic and Simplified, which arrange items in three and one row, respectively. A user can switch between them with a dedicated view selection button. 4 | 5 |  6 | 7 | The Ribbon control's main features include: 8 | 9 | - Classic and Simplified views 10 | - Support for all types of items (commands) available in the [traditional menus](toolbars.md): regular buttons, check buttons, editors, labels, sub-menus and button groups. 11 | - In-place and popup item galleries 12 | - Quick Access Toolbar - A user can add frequently used commands to this toolbar at runtime from a context menu. 13 | - Customizing the Quick Access Toolbar position (above or below the Ribbon command panel) and visibility 14 | - Displaying items in the tab header area 15 | - Tab header colorization (allows you to highlight contextual tabs) 16 | - Ribbon item navigation with the keyboard 17 | - Adaptive layout of groups and items (adjusts the layout of commands when the Ribbon control's width changes) --------------------------------------------------------------------------------