@Melz

WPF, как правильно прокинуть MediaElement в VM для тестирования?

Всем привет,

Технологии: C#, WPF, Moq, NUnit, MVVM и немного TDD :)
Есть MediaElement который немного проигрывает немного видео (лого и демку). Делается по примеру со StackOverflow.

XAML:

<ContentControl 
            x:Name="MediaElement"
            Content="{Binding MediaElementObject}"/>


ViewModel:

public MediaElement MediaElementObject
        {
            get { return _mediaElementObject; }
            set { _mediaElementObject = value; OnPropertyChanged(); }
        }


Соответственно в коде вида только InitializeComponent() и почти все сделано командами (ICommand).
MediaElementObject нужен в VM тк там есть методы Play, Pause, Stop которые я мучаю из разных частей.

Что не нравится:
1. ContentControl - в хамл проблема писать триггеры и тд
2. MediaElement в VM, как бы против канонов.
3. MediaElement нельзя замокить.
4 MediaElement требует STA, что печально тк тесты идут очень долго. И вообще требует реф. на WPF в тестах. Сплошная печалька.

Альтернатива №1: Была идея сделать обертку вокруг MediaElement, IMediaElement и класс-фасад, прокинув все методы. Но биндинги в виде те еще получаются.

Альтернатива №2: забросить все в Storyboard (пример с контролом).

Может опытные люди подскажут как правильно это делать? :)
  • Вопрос задан
  • 339 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы