/// <summary>
        /// Triggered when Run button is clicked
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        override async protected void RunButton_Click(object sender, RoutedEventArgs e)
        {
            // Update ISKillBinding
            ImageCleanerBinding binding = m_skillBinding as ImageCleanerBinding;

            // Set interpolation type
            await binding.SetImageCleaningKindAsync(m_ImageCleanerBindingFeatureValues.InputImageType);

            // Invoke event handlers
            base.RunButton_Click(sender, e);
        }
        /// <summary>
        /// Update results displayed
        /// </summary>
        /// <param name="additionalResult"></param>
        /// <returns></returns>
        override public async Task UpdateSkillControlValuesAsync(object additionalResult)
        {
            ImageCleanerBinding binding     = (additionalResult as ImageCleanerBinding);
            VideoFrame          resultImage = binding.OutputImage;
            await m_interactiveControl.UpdateResultImageAsync(resultImage);

            var detectedImageType             = binding["DetectedImageType"].FeatureValue;
            var detectedImageTypeFeatureValue = (detectedImageType as SkillFeatureTensorStringValue).GetAsVectorView()[0];
            var value = (ImageCleaningKind)Enum.GetNames(typeof(ImageCleaningKind)).ToList().IndexOf(detectedImageTypeFeatureValue);

            m_interactiveControl.UpdateResultImageType(value);

            await base.UpdateSkillControlValuesAsync(additionalResult);
        }