私は、特に再生機能を活用して、メディア コンポーネントを使用する MVVM C# Metro アプリケーションに取り組んでいます。
通常、プロパティをバインドするように見えますが、などの呼び出しを行う必要がありますMediaElement.Play(source);
。これまでに思いついた最善の解決策は、コード ビハインドによって処理されるビュー モデルからイベントを発生させることです。
これは実際にベストプラクティスですか、それともより洗練されたアプローチがありますか?
私は一度、MVVM の方法を使用して WPF でメディア プレーヤーを実行しようとしましたが、私の経験から感じたのは、MVVM の方法でそれを実行するのは本当に苦痛になるということです。常に MVVM に固執するよりも複雑でなく高速である場合は、コード ビハインドを作成することをお勧めします。後で、いくつかの依存関係プロパティを使用してユーザー コントロールとして分離し、見た目をきれいにすることができます。とにかく、メディアの再生に関して、「また」できることは、ビューモデルにメディアプレーヤー(Media Player)を保持し、そのメディアプレーヤーを指すビデオブラシを作成し、それを使用してビデオをビューに表示することです。描画ブラシを設定した四角形またはその他の要素を使用できます。メディア プレーヤーはビューモデルであるため、再生、停止、シークなどを行うことができます。
このようなもの、
var player = new MediaPlayer();
var myVideo = new VideoDrawing { Rect = new Rect(0, 0, 1, 1), Player = player };
var dBrush = new DrawingBrush(myVideo);
// Use drawing brush to fill a rectangle
rectangle.Fill = dBrush;
MSDN
より効率的な方法でこれを行うのに役立つ一連の記事があります。
注:これらはまだ .Net 4 の例ですが、すべての拡張機能を備えた Windows 8 で実行するのに多くの労力は必要ないと確信しています。