ConventionBinder now binds IDialogViewModel.Submit to close the associated view

This commit is contained in:
Markus Ewald 2025-07-05 20:17:19 +02:00
parent 364b8919b5
commit e11922ae4f
3 changed files with 73 additions and 5 deletions

View file

@ -0,0 +1,43 @@
#region Apache License 2.0
/*
Nuclex Foundation libraries for .NET
Copyright (C) 2002-2025 Markus Ewald / Nuclex Development Labs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#endregion // Apache License 2.0
using System;
namespace Nuclex.Avalonia.ViewModels {
/// <summary>Carries the desired dialog result from a view model</summary>
public class DialogResultEventArgs : EventArgs {
/// <summary>Initializes a new dialog result event argument container</summary>
/// <param name="result">Result the dialog should exit with</param>
public DialogResultEventArgs(object result) {
this.result = result;
}
/// <summary>Result that should be returned from the dialog</summary>
public object Result {
get { return this.result; }
}
/// <summary>Result that should be returned from the dialog</summary>
private readonly object result;
}
} // namespace Nuclex.Avalonia.ViewModels

View file

@ -20,20 +20,21 @@ limitations under the License.
using System;
using System.Threading.Tasks;
using Nuclex.Support;
using Nuclex.Avalonia.ViewModels;
namespace Nuclex.Windows.Forms.ViewModels {
namespace Nuclex.Avalonie.ViewModels {
/// <summary>Interface for dialog view models (typically modal ones)</summary>
public interface IDialogViewModel {
/// <summary>Indicates that the view should close</summary>
event EventHandler Submitted;
event EventHandler<DialogResultEventArgs> Submitted;
/// <summary>Indicates that the dialog should be closed</summary>
/// <param name="dialogResult">Result the dialog should return</param>
/// <returns>A task that finishes when the submit notification has been sent</returns>
Task SubmitAsync();
Task SubmitAsync(object? dialogResult = null);
}
} // namespace Nuclex.Windows.Forms.ViewModels
} // namespace Nuclex.Avalonie.ViewModels