├── .gitattributes
├── .gitignore
├── License.md
├── OLDDOCS.md
├── README.md
├── WpfMaterialForms.sln
├── WpfMaterialForms.sln.DotSettings
├── appveyor.yml
├── doc
├── dialog.png
├── email.png
├── login.png
├── settings.png
└── user.png
└── src
├── Demo
├── Material.Application
│ ├── Commands
│ │ ├── IMenuCommand.cs
│ │ ├── IRefreshableCommand.cs
│ │ ├── Internal
│ │ │ ├── AsyncRouteActionCommand.cs
│ │ │ ├── AsyncRouteCommand.cs
│ │ │ ├── AsyncRouteValueCommand.cs
│ │ │ ├── Menu
│ │ │ │ ├── AsyncRouteActionMenuCommand.cs
│ │ │ │ ├── AsyncRouteMenuCommand.cs
│ │ │ │ ├── AsyncRouteValueMenuCommand.cs
│ │ │ │ ├── RouteActionMenuCommand.cs
│ │ │ │ ├── RouteMenuCommand.cs
│ │ │ │ └── RouteValueMenuCommand.cs
│ │ │ ├── RouteActionCommand.cs
│ │ │ ├── RouteCommand.cs
│ │ │ └── RouteValueCommand.cs
│ │ └── UntrackedCommand.cs
│ ├── Controls
│ │ ├── AlignableWrapPanel.cs
│ │ ├── BindingProxy.cs
│ │ ├── ConfirmableButton.cs
│ │ ├── ISortable.cs
│ │ ├── LockableToggleButton.cs
│ │ ├── MaterialRoutesWindow.xaml
│ │ ├── MaterialRoutesWindow.xaml.cs
│ │ ├── NullAsSeparatorTemplateSelector.cs
│ │ ├── PageableCollection.cs
│ │ ├── ScrollViewerExtensions.cs
│ │ ├── SortableDataGrid.cs
│ │ └── SortablePageableCollection.cs
│ ├── Helpers
│ │ ├── CollectionHelpers.cs
│ │ ├── ExceptionHelpers.cs
│ │ ├── Internal
│ │ │ ├── AttachedProperties.cs
│ │ │ ├── ErrorMessages.cs
│ │ │ ├── IocHelpers.cs
│ │ │ └── RouteErrorListenerExtensions.cs
│ │ ├── LanguageHelpers.cs
│ │ └── PathHelpers.cs
│ ├── Infrastructure
│ │ ├── AppController.cs
│ │ ├── IContext.cs
│ │ ├── IDialogService.cs
│ │ ├── IFilePicker.cs
│ │ ├── ILocalizationService.cs
│ │ ├── IMainWindowController.cs
│ │ ├── IMainWindowLocator.cs
│ │ ├── INotificationService.cs
│ │ ├── IPaletteService.cs
│ │ ├── IServiceLocator.cs
│ │ ├── ISingleton.cs
│ │ └── Internal
│ │ │ ├── DefaultAppModule.cs
│ │ │ ├── DialogFilePicker.cs
│ │ │ ├── DialogFileSaver.cs
│ │ │ ├── DialogHostService.cs
│ │ │ ├── DispatcherContext.cs
│ │ │ ├── NinjectServiceLocator.cs
│ │ │ ├── PaletteService.cs
│ │ │ ├── ServiceLocatorRouteFactory.cs
│ │ │ ├── SnackbarNotificationService.cs
│ │ │ └── XamlLocalizationService.cs
│ ├── Localization
│ │ └── Language.cs
│ ├── Material.Application.csproj
│ ├── MaterialDesign
│ │ ├── CustomErrorTemplate.xaml
│ │ ├── CustomPasswordBoxHintProxy.cs
│ │ ├── CustomTextBoxHintProxy.cs
│ │ └── MaterialDesignHelper.cs
│ ├── Models
│ │ ├── CommandRefreshSource.cs
│ │ ├── Model.cs
│ │ ├── ObjectPresenter.cs
│ │ ├── PropertyRefreshSource.cs
│ │ └── RefreshSource.cs
│ ├── Properties
│ │ ├── Annotations.cs
│ │ └── AssemblyInfo.cs
│ ├── Routing
│ │ ├── Default
│ │ │ └── ListRoute.cs
│ │ ├── IRouteErrorListener.cs
│ │ ├── IRouteFactory.cs
│ │ ├── IRouteStack.cs
│ │ ├── IRouteWrapper.cs
│ │ ├── Internal
│ │ │ ├── RouteItem.cs
│ │ │ ├── RouteStack.cs
│ │ │ └── RouteWrapperInternal.cs
│ │ ├── Route.cs
│ │ ├── RouteActivationMethod.cs
│ │ ├── RouteConfig.cs
│ │ ├── RouteEventError.cs
│ │ ├── RouteEventType.cs
│ │ ├── RouteTransitionException.cs
│ │ └── TransientRoute.cs
│ ├── ValueConverters
│ │ ├── CollectionToVisibilityConverter.cs
│ │ ├── NullToVisibilityConverter.cs
│ │ └── VariableExpanderConverter.cs
│ ├── Views
│ │ ├── CollectionView.xaml
│ │ ├── CollectionView.xaml.cs
│ │ ├── FormView.xaml
│ │ ├── FormView.xaml.cs
│ │ ├── LoadingView.xaml
│ │ ├── LoadingView.xaml.cs
│ │ └── View.cs
│ ├── app.config
│ └── packages.config
└── MaterialForms.Demo
│ ├── App.config
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── FodyWeavers.xml
│ ├── Infrastructure
│ └── DemoAppController.cs
│ ├── MaterialForms.Demo.csproj
│ ├── ModelTypeToVisibilityConverter.cs
│ ├── Models
│ ├── DataTypes.cs
│ ├── ExamplePresenter.cs
│ ├── FoodSelection.cs
│ ├── Home
│ │ └── Introduction.cs
│ ├── Login.cs
│ ├── ProgressModel.cs
│ ├── Selection.cs
│ ├── Settings.cs
│ └── User.cs
│ ├── OldDemo
│ ├── ComplexWindow.cs
│ ├── MainWindow.xaml
│ └── MainWindow.xaml.cs
│ ├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
│ ├── Routes
│ ├── ExamplesRoute.cs
│ ├── HomeRoute.cs
│ └── XmlExamplesRoute.cs
│ ├── ViewBindings.xaml
│ ├── Views
│ ├── ExamplesView.xaml
│ ├── ExamplesView.xaml.cs
│ ├── FormView.xaml
│ ├── FormView.xaml.cs
│ ├── XmlExamplesView.xaml
│ └── XmlExamplesView.xaml.cs
│ └── packages.config
├── MaterialForms.Tests
├── BoundExpressionTests.cs
├── MaterialFormTests.cs
├── MaterialForms.Tests.csproj
└── Properties
│ └── AssemblyInfo.cs
└── MaterialForms
├── App.config
├── AttachedProperties
└── PasswordBoxHelper.cs
├── Components
└── LoadingButton.cs
├── FodyWeavers.xml
├── Mappers
└── MaterialMapper.cs
├── MaterialForms.csproj
├── MaterialForms.csproj.DotSettings
├── MaterialForms.nuspec
├── Old
├── ColorAssist.cs
├── Controls
│ ├── ButtonControl.xaml
│ ├── ButtonControl.xaml.cs
│ ├── CaptionControl.xaml
│ ├── CaptionControl.xaml.cs
│ ├── CheckBoxControl.xaml
│ ├── CheckBoxControl.xaml.cs
│ ├── ComboBoxControl.xaml
│ ├── ComboBoxControl.xaml.cs
│ ├── DatePickerControl.xaml
│ ├── DatePickerControl.xaml.cs
│ ├── FileLoaderControl.xaml
│ ├── FileLoaderControl.xaml.cs
│ ├── KeyValueControl.xaml
│ ├── KeyValueControl.xaml.cs
│ ├── MultiLineTextControl.xaml
│ ├── MultiLineTextControl.xaml.cs
│ ├── MultiSchemaControl.xaml
│ ├── MultiSchemaControl.xaml.cs
│ ├── PasswordTextControl.xaml
│ ├── PasswordTextControl.xaml.cs
│ ├── ProgressControl.xaml
│ ├── ProgressControl.xaml.cs
│ ├── SingleLineTextControl.xaml
│ ├── SingleLineTextControl.xaml.cs
│ ├── SliderControl.xaml
│ ├── SliderControl.xaml.cs
│ ├── SwitchControl.xaml
│ ├── SwitchControl.xaml.cs
│ ├── TimePickerControl.xaml
│ └── TimePickerControl.xaml.cs
├── DataSchema
│ ├── BooleanSchema.cs
│ ├── CaptionSchema.cs
│ ├── CommandSchema.cs
│ ├── DateSchema.cs
│ ├── IntegerSchema.cs
│ ├── KeyValueSchema.cs
│ ├── MultiSchema.cs
│ ├── NumberRangeSchema.cs
│ ├── PasswordSchema.cs
│ ├── ProgressSchema.cs
│ ├── SchemaBase.cs
│ ├── SelectionSchema.cs
│ ├── SingleFileSchema.cs
│ ├── StringSchema.cs
│ └── TimeSchema.cs
├── DelegateCommand.cs
├── Extensions
│ └── InitializerExtensions.cs
├── Forms
│ ├── DialogActionListener.cs
│ ├── DialogFactory.cs
│ ├── DialogSession.cs
│ ├── DialogTheme.cs
│ ├── DispatcherOption.cs
│ ├── FormActionCallback.cs
│ ├── MaterialApplication.cs
│ ├── MaterialDialog.cs
│ ├── MaterialForm.cs
│ ├── MaterialWindow.cs
│ ├── Session.cs
│ ├── WindowFactory.cs
│ └── WindowSession.cs
├── IViewProvider.cs
├── MaterialFormsWindow.xaml
├── MaterialFormsWindow.xaml.cs
├── PasswordHelpers.cs
├── ProgressBarSmoother.cs
├── SessionAssist.cs
├── Tasks
│ ├── ProgressController.cs
│ ├── ProgressDialogOptions.cs
│ └── TaskRunner.cs
├── Validation
│ ├── ValidationCallback.cs
│ └── Validators.cs
├── ValueConverters
│ ├── BoolInversionConverter.cs
│ ├── BoolToResizeModeConverter.cs
│ ├── FormEmptyMarginConverter.cs
│ ├── StringToIntegerConverter.cs
│ ├── StringToVisibilityConverter.cs
│ └── ValueToPercentConverter.cs
└── Views
│ ├── DialogView.xaml
│ ├── DialogView.xaml.cs
│ ├── FormView.xaml
│ └── FormView.xaml.cs
├── Properties
├── Annotations.cs
├── AssemblyInfo.cs
├── Resources.Designer.cs
├── Settings.Designer.cs
└── Settings.settings
├── Resources
├── DialogViewResources.xaml
├── Material.xaml
└── TextStyles.xaml
├── Themes
├── Elements
│ └── Text.xaml
├── Generic.xaml
├── Material.xaml
├── Material
│ ├── Element.Action.xaml
│ ├── Element.Text.xaml
│ ├── Field.CheckBox.xaml
│ ├── Field.Converted.xaml
│ ├── Field.DatePicker.xaml
│ ├── Field.Password.xaml
│ ├── Field.Progress.xaml
│ ├── Field.Selection.xaml
│ ├── Field.Slider.xaml
│ ├── Field.String.xaml
│ ├── Field.Switch.xaml
│ └── IconStyles.xaml
├── Metro.xaml
├── Metro
│ ├── Element.Action.xaml
│ ├── Element.Text.xaml
│ ├── Field.CheckBox.xaml
│ ├── Field.Converted.xaml
│ ├── Field.Password.xaml
│ ├── Field.String.xaml
│ ├── Field.Switch.xaml
│ └── IconStyles.xaml
├── Wpf.xaml
└── Wpf
│ ├── Element.Action.xaml
│ ├── Field.CheckBox.xaml
│ ├── Field.Converted.xaml
│ ├── Field.Password.xaml
│ ├── Field.String.xaml
│ ├── Field.Switch.xaml
│ └── IconStyles.xaml
└── Wpf
├── ActionEventArgs.cs
├── Annotations
├── BindingAttribute.cs
├── CardAttribute.cs
├── Content
│ ├── ActionAttribute.cs
│ ├── BreakAttribute.cs
│ ├── DividerAttribute.cs
│ ├── FormContentAttribute.cs
│ └── TextElementAttribute.cs
├── DefaultFields.cs
├── Display
│ ├── PasswordAttribute.cs
│ ├── ProgressAttribute.cs
│ ├── SliderAttribute.cs
│ └── ToggleAttribute.cs
├── EnumDisplayAttribute.cs
├── FieldAttribute.cs
├── FieldIgnoreAttribute.cs
├── FormAttribute.cs
├── Must.cs
├── ReplaceAttribute.cs
├── ResourceAttribute.cs
├── SelectFromAttribute.cs
├── SelectionType.cs
├── ValidationAction.cs
└── ValueAttribute.cs
├── Controls
├── ActionPanel.cs
├── DynamicForm.cs
├── IDynamicForm.cs
├── MaterialDialog.cs
├── SelectTextOnFocus.cs
└── TextProperties.cs
├── Fields
├── BindingProvider.cs
├── ContentElement.cs
├── DataFormField.cs
├── Defaults
│ ├── ActionAlignerElement.cs
│ ├── ActionElement.cs
│ ├── BooleanField.cs
│ ├── BreakElement.cs
│ ├── CardElement.cs
│ ├── ConvertedField.cs
│ ├── DateField.cs
│ ├── DividerElement.cs
│ ├── HeadingElement.cs
│ ├── ProgressField.cs
│ ├── SelectionField.cs
│ ├── SliderField.cs
│ ├── StringField.cs
│ ├── TextElement.cs
│ └── TitleElement.cs
├── FormBindingExtension.cs
├── FormDefinition.cs
├── FormElement.cs
├── FormField.cs
├── FormRow.cs
├── IBindingProvider.cs
├── IDataBindingProvider.cs
├── IFormDefinition.cs
├── ReplacementPipe.cs
├── StringTypeConverter.cs
└── ValueBindingProvider.cs
├── FormBuilding
├── CustomCulture.cs
├── Defaults
│ ├── Initializers
│ │ ├── BindingInitializer.cs
│ │ ├── FieldInitializer.cs
│ │ └── ValidatorInitializer.cs
│ ├── Primitive.cs
│ ├── Properties
│ │ ├── SelectFromBuilder.cs
│ │ └── SliderBuilder.cs
│ └── Types
│ │ ├── DefaultTypeBuilders.cs
│ │ ├── ProgressBuilder.cs
│ │ └── TypeBuilder.cs
├── Deserializers.cs
├── DynamicProperty.cs
├── FormBuilder.cs
├── IFieldBuilder.cs
├── IFieldInitializer.cs
├── IFormProperty.cs
├── PropertyInfoWrapper.cs
├── Utilities.cs
└── ValidatorProvider.cs
├── Forms
├── ActionEventArgs.cs
├── Alert.cs
├── Base
│ ├── DialogBase.cs
│ └── FormBase.cs
├── Confirm.cs
└── Prompt.cs
├── IActionHandler.cs
├── ModelState.cs
├── Resources
├── BindingOptions.cs
├── BindingProxy.cs
├── BoolProxy.cs
├── BoundExpression.cs
├── BoundValue.cs
├── CoercedValueProvider.cs
├── ContextPropertyBinding.cs
├── ConvertedDataBinding.cs
├── ConvertedDirectBinding.cs
├── DataBinding.cs
├── DeferredProxyResource.cs
├── DirectBinding.cs
├── DynamicResource.cs
├── EnumerableStringValueProvider.cs
├── EnumerableValueProvider.cs
├── FormResourceContext.cs
├── IProxy.cs
├── IResourceContext.cs
├── IValueProvider.cs
├── LiteralValue.cs
├── PropertyBinding.cs
├── ProxyResource.cs
├── Resource.cs
├── StaticResource.cs
├── StringProxy.cs
└── ValueConverters
│ ├── AsBoolConverter.cs
│ ├── BoolOrVisibilityConverter.cs
│ ├── ConverterWrapper.cs
│ ├── IsEmptyConverter.cs
│ ├── IsNotEmptyConverter.cs
│ ├── IsNotNullConverter.cs
│ ├── IsNullConverter.cs
│ ├── LengthValueConverter.cs
│ ├── NegateConverter.cs
│ ├── ToLowerConverter.cs
│ ├── ToStringConverter.cs
│ ├── ToUpperConverter.cs
│ └── VisibilityConverter.cs
└── Validation
├── ComparisonValidator.cs
├── ConversionValidator.cs
├── EmptyValidator.cs
├── EqualsValidator.cs
├── ExistsInValidator.cs
├── FalseValidator.cs
├── FieldValidator.cs
├── GreaterThanEqualValidator.cs
├── GreaterThanValidator.cs
├── IErrorStringProvider.cs
├── IValidatorProvider.cs
├── LessThanEqualValidator.cs
├── LessThanValidator.cs
├── MatchPatternValidator.cs
├── MethodInvocationValidator.cs
├── NotEmptyValidator.cs
├── NotEqualsValidator.cs
├── NotExistsInValidator.cs
├── NotMatchPatternValidator.cs
├── NotNullValidator.cs
├── NullValidator.cs
├── TrueValidator.cs
├── ValidationContext.cs
└── ValidationPipe.cs
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/License.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Edon Gashi
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # We've moved!
2 | Due to bigger plans we have created an organization and we moved to https://github.com/WPF-Forge/Forge.Forms
3 |
4 | # Read this for 1.1.2
5 | If you are looking for version 1.1.2 check out branch 1.1.2. Otherwise navigate to the Forge.Forms repository.
6 |
--------------------------------------------------------------------------------
/WpfMaterialForms.sln.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | True
3 | True
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | version: 2.0.0.{build}
2 |
3 | branches:
4 |
5 | only:
6 |
7 | - master
8 |
9 | only_commits:
10 | message: /\[Build\]/
11 |
12 | image: Visual Studio 2017
13 |
14 | configuration: Release
15 |
16 | platform: Any CPU
17 |
18 | init:
19 |
20 | - ps: >-
21 |
22 | $newVersion = $env:appveyor_build_version.Substring(0,$env:appveyor_build_version.LastIndexOf('.'));
23 | Update-AppveyorBuild -Version "$newVersion-ci$(Get-Date -format yyyyMMdd)-$(Get-Date -format HHmmss)"
24 |
25 | assembly_info:
26 |
27 | patch: true
28 |
29 | file: '**\AssemblyInfo.*'
30 |
31 | assembly_version: 2.0.0.0
32 |
33 | assembly_file_version: 2.0.0.{build}
34 |
35 | assembly_informational_version: 2.0.0.{build}
36 |
37 | before_build:
38 |
39 | - ps: nuget restore
40 |
41 | build:
42 |
43 | project: src\MaterialForms\MaterialForms.csproj
44 |
45 | verbosity: minimal
46 |
47 | after_build:
48 |
49 | - ps: nuget pack src\MaterialForms\MaterialForms.csproj -Version $env:APPVEYOR_BUILD_VERSION -IncludeReferencedProjects
50 |
51 | artifacts:
52 |
53 | - path: '**\MaterialForms.*.nupkg'
54 |
55 | deploy:
56 |
57 | - provider: NuGet
58 |
59 | api_key:
60 |
61 | secure: ALElYwQcTMo/PpXFNBakLvjgDsuJHunVnIhbccQulTM/9mCNRhyD1HpEehGD46n/
62 |
--------------------------------------------------------------------------------
/doc/dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edongashi/WpfMaterialForms/7f19ac3e6a9919f11ae826efc4dd23ac7e7b8d12/doc/dialog.png
--------------------------------------------------------------------------------
/doc/email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edongashi/WpfMaterialForms/7f19ac3e6a9919f11ae826efc4dd23ac7e7b8d12/doc/email.png
--------------------------------------------------------------------------------
/doc/login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edongashi/WpfMaterialForms/7f19ac3e6a9919f11ae826efc4dd23ac7e7b8d12/doc/login.png
--------------------------------------------------------------------------------
/doc/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edongashi/WpfMaterialForms/7f19ac3e6a9919f11ae826efc4dd23ac7e7b8d12/doc/settings.png
--------------------------------------------------------------------------------
/doc/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edongashi/WpfMaterialForms/7f19ac3e6a9919f11ae826efc4dd23ac7e7b8d12/doc/user.png
--------------------------------------------------------------------------------
/src/Demo/Material.Application/Commands/IMenuCommand.cs:
--------------------------------------------------------------------------------
1 | using MaterialDesignThemes.Wpf;
2 |
3 | namespace Material.Application.Commands
4 | {
5 | public interface IMenuCommand : IRefreshableCommand
6 | {
7 | string CommandText { get; }
8 |
9 | PackIconKind? IconKind { get; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Demo/Material.Application/Commands/IRefreshableCommand.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 |
3 | namespace Material.Application.Commands
4 | {
5 | public interface IRefreshableCommand : ICommand
6 | {
7 | void RaiseCanExecuteChanged();
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Demo/Material.Application/Commands/Internal/Menu/AsyncRouteActionMenuCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Material.Application.Routing;
4 | using MaterialDesignThemes.Wpf;
5 |
6 | namespace Material.Application.Commands
7 | {
8 | internal class AsyncRouteActionMenuCommand : AsyncRouteActionCommand, IMenuCommand
9 | {
10 | public AsyncRouteActionMenuCommand(Route route, string commandText, PackIconKind? iconKind, Func execute,
11 | Func canExecute)
12 | : base(route, execute, canExecute)
13 | {
14 | CommandText = commandText;
15 | IconKind = iconKind;
16 | }
17 |
18 | public string CommandText { get; }
19 |
20 | public PackIconKind? IconKind { get; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Demo/Material.Application/Commands/Internal/Menu/AsyncRouteMenuCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Material.Application.Routing;
4 | using MaterialDesignThemes.Wpf;
5 |
6 | namespace Material.Application.Commands
7 | {
8 | internal class AsyncRouteMenuCommand : AsyncRouteCommand, IMenuCommand
9 | where TParameter : class
10 | {
11 | public AsyncRouteMenuCommand(Route route, string commandText, PackIconKind? iconKind,
12 | Func execute, Predicate canExecute, bool ignoreNullParameters)
13 | : base(route, execute, canExecute, ignoreNullParameters)
14 | {
15 | CommandText = commandText;
16 | IconKind = iconKind;
17 | }
18 |
19 | public string CommandText { get; }
20 |
21 | public PackIconKind? IconKind { get; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Demo/Material.Application/Commands/Internal/Menu/AsyncRouteValueMenuCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Material.Application.Routing;
4 | using MaterialDesignThemes.Wpf;
5 |
6 | namespace Material.Application.Commands
7 | {
8 | internal class AsyncRouteValueMenuCommand : AsyncRouteValueCommand, IMenuCommand
9 | where TParameter : struct
10 | {
11 | public AsyncRouteValueMenuCommand(Route route, string commandText, PackIconKind? iconKind,
12 | Func execute, Predicate