将 mediaelement 绑定到 viewmodel

Bind mediaelement to viewmodel

我正在 wpf 中使用 Caliburn Micro 进行一个大项目。 我做了一个应该看电影的视图。 我正在尝试将 MediaElement Source 绑定到我的 ViewModel 中的文件。

我的视图如下所示:

<TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Items}">
                <ContentControl cb:View.Model="{Binding}" />
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </controls:ExtendedTreeView>
    <MediaElement Source="media" Visibility="{Binding IsIndexVisible, Converter={StaticResource InvertBoolToHiddenConverter}}" />

在我的视图模型中:

  public override void NavigateEnter()
    {
        //base.NavigateEnter();

        if (CanExpand)
        {
            base.Expand();
            return;
        }

        if (SelectedItem == null) return;

            var media = new MediaElement();

            media.LoadedBehavior = MediaState.Manual;
            media.Source = new Uri(@"C:/Users/v80770/Desktop/Movies/ATTV_bog.mpg");
            media.Play();
     }

            private Uri _mediaUri;
        public Uri MediaUri
        {
            get
            {
                return _mediaUri;
            }
            set
            {
                _mediaUri = value;
                NotifyOfPropertyChange(() => MediaUri);
            }
        }

  public override void NavigateEnter()
        {
            //base.NavigateEnter();

            if (CanExpand)
            {
                base.Expand();
                return;
            }

            if (SelectedItem == null) return;

            var test = (@"C:/Users/v80770/Desktop/Movies/ATTV_bog.mpg");
            var mediauri = new Uri(test);
            _mediaUri = mediauri;

            IsIndexVisible = false;
        }

但是当我开始我的项目时,什么也没有显示。

您需要将 Uri 绑定为媒体元素的源。源依赖项 属性 需要 Uri 类型。你可以验证一下here.

<MediaElement Source="{Binding MediaUri}" />

其中 MediaUri 定义为

public Uri MediaUri {get;set; }