我有一个用于搜索效果很好的视频的视图模型。我添加了一个播放按钮,点击后我想加载一个呈现VideoView的视图。搜索视图模型包含足够的数据来生成视频的URL。
呈现VideoView的最佳方法是什么?
我找到了这个例子,但它似乎是MvvmCross的旧版本: https://gist.github.com/Alphapage/3945799
我应该创建自定义控件,如N = 18 - Android自定义控件 - N + 1天的MvvmCross? http://www.youtube.com/watch?v=s1LhXdCTsn4&feature=youtube_gdata
如果我创建自定义控件,我应该如何将视频的URL传递给VideoView并开始播放?
我确信这很容易,但我找不到一个有效的例子。
提前致谢
答案 0 :(得分:2)
您可以像Stuart那样创建自定义视图,而不是继承自ViewView的View继承。
然后创建一个名为VideoUri的属性,当它设置时,调用基础对象上的SetVideoUri和start方法。 E.g。
请注意以下代码是用记事本编写的,因此可能需要进行一些调整:)
public class BindableVideoView : VideoView
{
private Uri _videoUri = default(Uri);
public Uri VideoUri
{
get{ return _videoUri;}
set{
if(_videoUri!=value)
{
if(base.IsPlaying)
{
base.StopPlayback();
}
}
base.SetVideoURI(value);
base.Start();
}
}
}
你可以做一些事情,比如为IsPlaying公开一个属性,然后你的viewmodel可以双向绑定到那个,这样你的viewmodel会知道你什么时候播放了视频