将mediaelement绑定到viewmodel

问题描述 投票:0回答:1

我正在研究使用Caliburn Micro的wpf中的一个大项目。我已经做了一个应该观看电影的观点。我试图将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}}" />

在我的viewmodel中:

  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;
        }

但是,当我开始我的项目时,根本没有任何显示。

wpf caliburn.micro mediaelement
1个回答
0
投票

您需要将Uri绑定为Media Element的Source。 Source Dependency属性需要Uri的类型。你可以验证它here

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

MediaUri定义为的地方

public Uri MediaUri {get;set; }
© www.soinside.com 2019 - 2024. All rights reserved.