C# 将MedialElement从视图(xaml)绑定到ViewModel';s属性
我正在尝试将MainView.xaml中的medialElement绑定到ViewModel的proprety。 在MainViewModel.cs中,我们会发现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 {
#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}" />