You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/// Executes the AsyncRelayCommand on the current command target.
133
+
/// Executes the <see cref="ICommand"/> on the current command target.
119
134
/// </summary>
120
-
/// <param name="parameter">
121
-
/// Data used by the command.
122
-
/// </param>
123
-
/// <remarks>If the execute delegate is asynchronous (awaitable) then the execution is asynchronous otherwise synchronous.</remarks>
135
+
/// <remarks> When this method is called although an asynchronous execute delegate was registered, this asynchronous delegate will be executed asynchronously, but since the <see cref="Execute()"/> does not return a <see cref="Task"/> and is declared as <c>async void</c>, the execution is not awaitable and more important exceptions from an <c>async void</c> method can’t be caught with <c>catch</c>!
136
+
/// <para></para>Async void methods have different error-handling semantics. When an exception is thrown out of an <c>async Task</c> or <c>async Task<T></c> method, that exception is captured and placed on the <see cref="Task"/> object. With <c>async void</c> methods, there is no Task object, so any exceptions thrown out of an <c>async void</c> method will be raised directly on the SynchronizationContext that was active when the async void method started. Exceptions thrown from <c>async void</c> methods can’t be caught naturally.
137
+
/// <para></para>In such a scenario it is highly recommended to always call <see cref="ExecuteAsync()"/> instead.</remarks>
124
138
publicasyncvoidExecute()
125
139
{
126
140
if(this.executeAsync!=null)
@@ -171,7 +185,7 @@ public async Task ExecuteAsync()
171
185
/// <param name="parameter">
172
186
/// Data used by the command.
173
187
/// </param>
174
-
/// <returns><code>true</code>code> if this command can be executed, otherwise <code>false</code>.</returns>
188
+
/// <returns><c>true</c> if this command can be executed, otherwise <c>false</c>.</returns>
/// Attached behavior for <see cref="System.Windows.Controls.PasswordBox"/> that will send the <see cref="SecureString"/> of the <see cref="System.Windows.Controls.PasswordBox.SecurePassword"/> property to a command target e.g., view model using a registered <see cref="ICommand"/> registered with the <see cref="CommandProperty"/> attached property.
11
+
/// </summary>
12
+
/// <remarks>The attached behavior does at no point unwrap the the <see cref="SecureString"/> returned from the <see cref="System.Windows.Controls.PasswordBox.SecurePassword"/> property, nor does it access the security critical <see cref="System.Windows.Controls.PasswordBox.Password"/> property. The <see cref="System.Windows.Controls.PasswordBox.SecurePassword"/> value is simply forwarded to the command target of the registered <see cref="CommandProperty"/> attached property.</remarks>
/// Holds the <see cref="ICommand"/> which will be invoked with the <see cref="System.Windows.Controls.PasswordBox.SecurePassword"/> of type <see cref="SecureString"/> as command parameter.
/// When set to <c>true</c>, the <see cref="System.Windows.Controls.Primitives.Popup"/> is forced to stick to the current <see cref="System.Windows.Controls.Primitives.Popup.PlacementTarget"/>. The <see cref="System.Windows.Controls.Primitives.Popup"/> will follow the <see cref="System.Windows.Controls.Primitives.Popup.PlacementTarget"/> whenever it changes it's screen coordinates.
0 commit comments