Всем привет,
Технологии: 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 (пример с контролом).
Может опытные люди подскажут как правильно это делать? :)