コンポーネントのラインナップのカスタムメディアの要素
-
20-09-2019 - |
質問
こんにちはねんにかなり時間が経過した場合は、自動的にでコンポーネントのラインナップも必要とすることなく、少し開くだけで、こちらからちょいます。
作りたいカスタムメディアの要素こういうことができるように荷重にビデオ、遊び場から15秒に1分の動画、こういうことができるように動的に設定し、この負荷に基づきユーザーを設定します。私は積載トンの動画質をリストの視野コントロールしたい映像を再生でよじ登るようにして張り付いてい資源による演奏のみの小さなプレビューの映像です。
もんた
- カスタムの制御やや失
- サブクラス
- 前の構築の制御
Imか不明な場所への行きます。いくappericateのお役に立てるようです。
解決
あなたのコメントが要件に拡大を考えると、私はあなたが通常のMediaElementを使用することをお勧めしたい、だけ表示したいと保つように解像度を低減したフラグメントを含むビデオの「プレビュー」バージョンを割り当てダウンロード・フットプリントます。
このように、あなたのモデルはPreviewUriとSourceUriを言って、2つのプロパティを持つことになります。 PreviewUriで、あなたは、ビデオの「プレビュー」バージョンを格納します。 SourceUriで、あなたは「フル」バージョンを格納します。あなたのリストボックスまたはのItemsControlでは、あなたはPreviewUriにバインドされたMediaElementsを使用します。ユーザーが選択を行う際には、SourceUriにメインのMediaElementのソースを設定します。だからあなたのリストボックスは、次のようになります。
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<MediaElement Source="{Binding PreviewUri}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
あなたのモデルは、このようになります。
public class Video // ideally implement INotifyPropertyChanged - not shown
{
public Uri PreviewUri { get; set; }
public Uri SourceUri { get; set; }
public static ObservableCollection<Video> LoadVideoInfo()
{
/* pseudocode
new up a collection
foreach (file in videoFolder)
collection.Add(new Video { PreviewUri = smallFileUri, SourceUri = bigFileUri });
return collection;
*/
}
}
と次のようになりますの背後にあるあなたのコード:
DataContext = Video.LoadVideoInfo();
あなたはフルサイズのビデオは、あなたがこれとどこフルサイズのビデオ・ディスプレイをトリガしたいのかに依存します示してどのように。リストボックスを使用するのではなくループしてあなたがSelectedItemChangedイベントを使用することができるためのStackPanelに子を追加すると、これに役立つかもしれない、データバインドはのSelectedItemまたはIsSynchronizedWithCurrentItemプロパティを使用します。