Привязать медиаэлемент к модели представления - PullRequest
0 голосов
/ 13 марта 2019

Я работаю над большим проектом в wpf, который использует Caliburn Micro. Я сделал вид, который должен посмотреть фильм. Я пытаюсь привязать источник MediaElement к моему файлу, который есть в моей модели представления.

Мой взгляд выглядит так:

<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 голосов
/ 14 марта 2019

Вам необходимо привязать Uri как источник для медиа-элемента.Свойство Source Dependency ожидает тип Uri.Вы можете проверить это здесь .

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

Где MediaUri определено как

public Uri MediaUri {get;set; }
...