Используйте IResult. образец кода
Изменить: на основе логического значения, если вы опишите сценарий этого, я могу изменить образец.
Вид:
<Grid>
<MediaElement AutoPlay="False"
Source="../Assests/Kalimba.mp3"></MediaElement>
<Button x:Name="Play"
Content="Play"
Height="50"
Width="150" />
</Grid>
ViewModel:
public class MediaViewModel : Screen
{
public MediaViewModel()
{
DisplayName = "Media Sample";
}
public IEnumerable<IResult> Play()
{
var result = new PlayMediaResult();
yield return result;
}
}
PlayMediaResult:
public class PlayMediaResult : IResult
{
public void Execute(ActionExecutionContext context)
{
var view = context.View as FrameworkElement;
var mediaElement = FindVisualChild<MediaElement>(view);
if (mediaElement != null)
{
mediaElement.Play();
Completed(this, new ResultCompletionEventArgs {});
}
Completed(this, new ResultCompletionEventArgs {});
}
public event EventHandler<ResultCompletionEventArgs> Completed;
public static TChildItem FindVisualChild<TChildItem>(DependencyObject obj)
where TChildItem : DependencyObject
{
for (var i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
var child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is TChildItem)
return (TChildItem) child;
var childOfChild = FindVisualChild<TChildItem>(child);
if (childOfChild != null)
return childOfChild;
}
return null;
}
}
}