C# 将MedialElement从视图(xaml)绑定到ViewModel';s属性

C# 将MedialElement从视图(xaml)绑定到ViewModel';s属性,c#,wpf,binding,mvvm,mediaelement,C#,Wpf,Binding,Mvvm,Mediaelement,我正在尝试将MainView.xaml中的medialElement绑定到ViewModel的proprety。 在MainViewModel.cs中,我们会发现 #region Media private MediaElement media; public MediaElement Media { get { return media; } set {

我正在尝试将MainView.xaml中的medialElement绑定到ViewModel的proprety。 在MainViewModel.cs中,我们会发现

#region Media
private MediaElement media;
    public MediaElement Media
    {
        get
        {
            return media;
        }
        set
        {
            if (value == media)
                return;
            media = value;
            OnPropertyChanged("Media");
        }
    }
    #endregion
我想知道在MainView.xaml中放置什么来进行绑定

我知道如果它是一个文本框,我会写

`<TextBox Text="{Binding BGToSet, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />`
``
但是我应该为MediaElement做些什么呢? 我现在这样做:

`<MediaElement  VerticalAlignment="Center" Width="700" LoadedBehavior="Manual" Height="450" Stretch="Fill"  MediaOpened="{ Binding mediaMediaOpenedCommand}" >
`
`
非常感谢你的回答!!对不起我的英语。我也是WPF的新手

您应该公开要显示的媒体源的
Uri
,而不是
MediaElement

public Uri MediaSource { get { /* ... */ } set { /* ... */ } }

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

(感谢您的回答)第一个解决方案:我更喜欢保留public italic bold
MediaElement Media
,因为我在MainViewModel.cs中以其他方式使用它。第二种解决方案:此解决方案显然是我的最佳解决方案,但我不确定我是否理解它,我是否尝试过它我有以下问题:错误7“MediaElement”类型不支持直接内容。从XAML中删除
MediaElement
,并将其替换为
ContentControl
,不要只添加
ContentControl
。您的解释当然很清楚,但我感到困惑:如果我使用
ContentControl
而不是mediaElement,我如何为命令“mediaMediaOpenedCommand
进行绑定?这里是我的代码:
gliser et déposer une vidéo sur cetécran`如果使用第二种解决方案,就不能在XAML中绑定
MediaElement
的属性。使用视图模型代码执行此操作,因为它已经在创建
MediaElement
。另外,
MediaOpened
是一个事件,您不能直接将其绑定到命令,但您可以在创建
mediaoelement
时订阅它。创建
mediaoelement
后,使用
MediaOpened+=OnMediaOpened
并添加函数来处理事件:
void OnMediaOpened(对象发送方,RoutedEventArgs e){/*…*/}
<ContentControl Content="{Binding Media}" />