将中介元素绑定到视图模型

时间:2019-03-13 13:38:31

标签: wpf caliburn.micro mediaelement

我正在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;
        }

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

1 个答案:

答案 0 :(得分:0)

您需要将Uri绑定为媒体元素的源。 Source Dependency属性需要Uri类型。您可以here进行验证。

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

MediaUri定义为

public Uri MediaUri {get;set; }