public static void OutputValidationToViewModel <TViewModel>(
            this IEnumerable <string> messages,
            TViewModel viewModel)
            where TViewModel : ValidatableViewModel <TViewModel>
        {
            if (!messages.Any())
            {
                return;
            }

            ExclusiveRunLock.Run(() =>
            {
                messages.ForEach(m => viewModel.ValidationMessage.Value = m);
            });
        }
        public static void OutputValidationToViewModel <TViewModel, TProperty>(
            this IEnumerable <string> messages,
            TViewModel viewModel,
            Func <TViewModel, TProperty> property)
            where TViewModel : ValidatableViewModel <TViewModel>
            where TProperty : IInvalidatableInput
        {
            if (!messages.Any())
            {
                return;
            }

            ExclusiveRunLock.Run(() =>
            {
                messages.ForEach(m => viewModel.ValidationMessage.Value = m);
                property.Invoke(viewModel).Invalidate();
            });
        }