【问题标题】:Binding MedialElement from the view (xaml) to a ViewModel's property将视图 (xaml) 中的 MedialElement 绑定到 ViewModel 的属性
【发布时间】:2012-07-11 11:25:24
【问题描述】:

我正在尝试将 MainView.xaml 中的 medialElement 绑定到 ViewModel 的属性。 在 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 我会写

`<TextBox Text="{Binding BGToSet, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />`

但我应该为 MediaElement 做什么? 我现在这样做:

`<MediaElement  VerticalAlignment="Center" Width="700" LoadedBehavior="Manual" Height="450" Stretch="Fill"  MediaOpened="{ Binding mediaMediaOpenedCommand}" >

` 非常感谢您的回答!!对不起我的英语不好。我也是 WPF 的新手

【问题讨论】:

    标签: c# wpf binding mvvm mediaelement


    【解决方案1】:

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

    public Uri MediaSource { get { /* ... */ } set { /* ... */ } }
    
    <MediaElement Source="{Binding MediaSource}" />
    

    或使用ContentControl(或ContentPresenter)显示MediaElement本身:

    <ContentControl Content="{Binding Media}" />
    

    【讨论】:

    • (感谢您的回答)第一个解决方案:我更喜欢公开 italic bold MediaElement Media 因为我在 MainViewModel.cs 中使用它在其他方法中。第二种解决方案:在我的情况下,这个解决方案显然是最好的,但我不确定我是否理解它,当我尝试它时,我有这个:错误 7 'MediaElement' 类型不支持直接内容。
    • 从 XAML 中删除 MediaElement 并将其替换为 ContentControl,不要只添加 ContentControl
    • 您的解释当然很清楚,但我很困惑:如果我使用 ContentControl 而不是 mediaElement 我如何为命令绑定 ` mediaMediaOpenedCommand? Here what was my code: Glisser et déposer une vidéo sur cetécran `
    • 如果您使用第二种解决方案,则无法在 XAML 中绑定 MediaElement 的属性。使用视图模型代码来执行此操作,因为它已经在创建 MediaElement。此外,MediaOpened 是一个事件,您不能直接将其绑定到命令,但您可以在创建 MediaElement 时订阅它。
    • 创建MediaElement后,使用Media.MediaOpened += OnMediaOpened并添加处理事件的函数:void OnMediaOpened(object sender, RoutedEventArgs e) { /* ... */ }
    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    相关资源
    最近更新 更多